Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Появиалсь идея создать маркетплейс на Laravel.
Пока что только прописал себе в exel функционал, сейчас распределяю какие мне нужны будут Modules, Controllers таблицы в БД.
Вопрос к сообществу такой: может кто делал что-то подобное? Интересно бы было почитать любой опыт.
А пока что у меня просьба у модераторов не удалять тему. Я думаю у меня будет появляться много вопросов по разным ньюансам и я их буду тут задавать, прямо в теме. Может людям потом пригодится.
Не в сети
Собственно первый вопрос:
При создании товара на маркетплейсе у него будет очень много разных характеристик ( цена, цвета, цена доставки, страна производства и так далее)
Все это предугадать невозможно ведь разные люди будут писать разное.
Все продукты которые будут добавляться пользователями я думаю помещать в одну таблицу в БД ( MYSQL)
Поскольку, как я уже написал, предугадать характеристики нереально, то создавать отдельный столбец для каждой характеристики нету смысла, а хорошо бы было записать все характеристики в ассоциативный массив в json и поместить в одну ячейку да и все.
Вопрос: какого формата столбец в таблице создать?
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'ов? Именно в ассоциативный массив.
Не в сети
огда пытаюсь создать такую таблицу то Laravel ругается вот так
Какая версия MySQL. JSON поддерживается с MySQL 5.7.8.
Подробнее о Laravel и MySQL JSON: https://laravel.demiart.ru/laravel-mysql-json/
Не в сети
Спасибо большое за совет.
Изминение версии БД меня немножко озадачили.
Вот в чем суть.
На хостинге имею сайты на 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.6 то данные к ней хранились в папке OSPanel\userdata\MySQL-5.6
А когда вы переключились на 8.0, то данные берутся из папки OSPanel\userdata\MySQL-8.0
Вам нужно ипортировать ваши БД в новую MySQL.
Не в сети
Страницы 1