#mysql #database #laravel #eloquent #pivot
#mysql #База данных #laravel #красноречивый #сводная
Вопрос:
Существует сводная таблица, называемая order_product
так:
order_id | product_id | quantity | price
1 2 3 1500
Мне нужно добавить serial для каждого order_product, но это невозможно, потому что есть number
столбец, и у каждого продукта есть свой serial .
Каков наилучший способ решения этой проблемы?
Хорошая ли идея добавить идентификатор в order_product
таблицу следующим образом:
id | order_id | product_id | price
1 6 2 1500
и создать другую таблицу, называемую serials
так?:
id | order_product_id | serial
1 1 6545154
2 1 123
3 1 456
Если другого способа нет, могу ли я реализовать его с помощью ORM, такого как Eloquent?
Комментарии:
1. serial принадлежит каждому order_product или product?
2. @Zartosht Serial принадлежит каждому order_product, каждый проданный продукт имеет свой собственный serial
3. почему бы не добавить дополнительный столбец в таблицу order_product с именем serial ?
4. @Zartosht Потому что есть поле количества, поэтому, если количество равно 2, означает, что эта строка представляет два продукта и имеет два серийных номера
5. @Ali можете ли вы сказать мне, какова связь между продуктовыми и серийными моделями?
Ответ №1:
создайте новую модель с именем OrderProducts
(или любым другим, которое вы хотите), в этой модели добавьте это защищенное поле:
protected $table = "order_product";
после добавления приведения к этой модели для поля с именем serials
:
protected $casts = [
"serials" => "array"
];
теперь ваши сериалы должны представлять собой массив серийных проданных продуктов.