Возможно ли создать множество взаимосвязей между сводной таблицей и другой таблицей?

#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"
    ];
  

теперь ваши сериалы должны представлять собой массив серийных проданных продуктов.