Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 21.07.2019 18:09:11

Маркетплейс на Laravel (Вопросы по разработке)

Появиалсь идея создать маркетплейс на Laravel.
Пока что только прописал себе в exel функционал, сейчас распределяю какие мне нужны будут Modules, Controllers таблицы в БД.

Вопрос к сообществу такой: может кто делал что-то подобное? Интересно бы было почитать любой опыт.

А пока что у меня просьба у модераторов не удалять тему. Я думаю у меня будет появляться много вопросов по разным ньюансам и я их буду тут задавать, прямо в теме. Может людям потом пригодится.

Не в сети

#2 21.07.2019 18:31:15

Re: Маркетплейс на Laravel (Вопросы по разработке)

Собственно первый вопрос:
При создании товара на маркетплейсе у него будет очень много разных характеристик ( цена, цвета, цена доставки, страна производства и так далее)
Все это предугадать невозможно ведь разные люди будут писать разное.
Все продукты которые будут добавляться пользователями я думаю помещать в одну таблицу в БД ( MYSQL)
Поскольку, как я уже написал, предугадать характеристики нереально, то создавать отдельный столбец для каждой характеристики нету смысла, а хорошо бы было записать все характеристики в ассоциативный массив в json и поместить в одну ячейку да и все.

jBeTwz2.jpg
Вопрос: какого формата столбец в таблице создать?

Schema::create('products', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->text('title');
            $table->increments('cat_id');
            $table->json('options'); // как создать эту ячейку? можетпросто $table->text('options');
            $table->timestamps();
        });

Когда пытаюсь создать такую таблицу то Laravel ругается вот так

Illuminate\Database\QueryException  : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'json not null, `created_at` timestamp null, `updated_at` timestamp null) default' at line 1 (SQL: create table `products` (`id` bigint unsigned not null auto_increment primary key, `title` text not null, `cat_id` int unsigned not null auto_increment primary key, `options` json not null, `created_at` timestamp null, `updated_at` timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')


И подскажите как туда загнать данные из input'ов? Именно в ассоциативный массив.

Не в сети

#3 22.07.2019 15:01:07

Re: Маркетплейс на Laravel (Вопросы по разработке)

огда пытаюсь создать такую таблицу то Laravel ругается вот так

Какая версия MySQL. JSON поддерживается с MySQL 5.7.8.

Подробнее о Laravel и MySQL JSON: https://laravel.demiart.ru/laravel-mysql-json/

Не в сети

#4 22.07.2019 16:20:50

Re: Маркетплейс на Laravel (Вопросы по разработке)

Спасибо большое за совет.
Изминение версии БД меня немножко озадачили.
Вот в чем суть.
На хостинге имею сайты на Wordpress и Laravel. Там стоит версия MySQL
Версия сервера: 5.7.16-10-log - Percona Server (GPL), Release 10, Revision a0c7d0d
На локальном Open Server же стоит версия MySQL 5.6 x64.
Есть еще опции MySQL 5.7, MySQL 8.0.
Проблемма в том что когда я обновляю версию БД на локалке то проэкты у меня ломаются. Wordpress пишет Ошибка установки соединения с базой данных
Laravel пишет SQLSTATE[HY000] [1049] Unknown database

Как теперь решить такую проблемму?:)

Не в сети

#5 22.07.2019 16:28:23

Re: Маркетплейс на Laravel (Вопросы по разработке)

Когда вы переключаете базы данных на Опенсервере, то ваши базы остаются в той папке, где они были созданы.

Например, если у вас была база данных 5.6 то данные к ней хранились в папке OSPanel\userdata\MySQL-5.6
А когда вы переключились на 8.0, то данные берутся из папки OSPanel\userdata\MySQL-8.0

Вам нужно ипортировать ваши БД в новую MySQL.

Не в сети

Подвал раздела