Один-ко-многим с опорой невозможно. Как изменить отношения? - PullRequest
0 голосов
/ 23 апреля 2020

Я хотел бы сделать следующее:

Продукт может иметь одного поставщика . Поставщик содержит некоторые данные, например name. Кроме того, существует сводное значение, которое должно быть сохранено для Поставщик , которое назначено для Продукт (например, delivery_service -string).

Пример:

  • Продукт : Вкусный банан
  • Поставщик : Банан в c

-> Если Продукт"Вкусный банан" поставляется Поставщиком , он должен быть доставлен DHL . Важная вещь: Вы не можете добавить DHL в качестве поля к Поставщику , поскольку у каждого продукта для отношения с поставщиком должно быть свое собственное поле службы доставки.

Поскольку может быть много Продуктов с, но каждый Продуктов может иметь только одного Поставщика Я думал о чем-то вроде этого:

Продукте

Схема :

- id
- supplier_id

Отношение

public function supplier()
{
    return $this->belongsTo(Supplier::class);
}

Поставщик

Схема :

- id
- name

Отношение

public function products()
{
    return $this->hasMany(Product::class);
}

Это работает, но, к сожалению, я не могу сохранить сводные данные в отношение supplier().

В настоящий момент я могу представить себе сохранение value не в сводной таблице, а в новом row в схеме Product . Но я не думаю, что это лучший способ.

Есть предложения? : -)

1 Ответ

0 голосов
/ 23 апреля 2020

Один элемент имеет много дочерних элементов Это один ко многим

Вам необходимо сохранить item_id в вашей дочерней таблице

Item Table
id, name
Child Table
id, item_id, type

Если у вас есть кейс EG. У каждого ребенка может быть свой любимый предмет, тогда вам нужно будет создать отношение «многие ко многим» между ними. (Это будет отдельное отношение)

Создайте таблицу "child_item" (pivot)

Child Item Table
child_id, item_id

, затем создайте отношение в вашем laravel

class User extends Model{
   ...

   public function favorites(){
      return $this->belongsToMany(Items::class); // Include the path using "use" on top
   }


}

Итак, теперь у вас есть 2 отношения между ребенком и элементом

  1. Один элемент может иметь много детей
  2. Многие дети могут пометить элементы в избранном
...