Laravel (5.6) Красноречивые отношения для электронной коммерции - PullRequest
0 голосов
/ 29 мая 2018

Итак, я пытаюсь продумать Laravel Eloquent Relationships для проекта электронной коммерции, над которым я работаю.У меня есть таблица продуктов, и я думаю о создании таблицы вкусов и таблицы размеров.Вот отношения, на которые я смотрю:

Один продукт может иметь много вкусов - этот я могу просто использовать отношения один-ко-многим, то есть hasMany.

Один продукт можетУ меня много размеров - этот я могу просто использовать отношения один-ко-многим, т.е. hasMany.

Один вкус может быть связан со многими продуктами - в этом я не уверен, потому что я не уверенЯ хочу просто воссоздать аромат в таблице ароматов и связать повторяющийся аромат с другим продуктом. Я хотел бы связать аромат со многими продуктами, но не уверен, как этого добиться.Предложения?

Или у кого-то есть чистый (э) способ сделать это?Заранее спасибо.

1 Ответ

0 голосов
/ 29 мая 2018

Вы можете сохранить идентификатор аромата в таблице продуктов (если продукт имеет только ОДИН аромат).

Чтобы сохранить более одного аромата в продукте, необходим третий стол.

Пример:

TableProducts |TableFlavours |TableUsedFlavours (будет содержать идентификатор продукта и идентификатор аромата).

Чем искать продукт, используя «с» для связи TableUsedFlavours.Со связями вы также можете связать TableFlavours, чтобы получить имя аромата.

Извлечение аромата из продукта (также с именем аромата):

Контроллер продуктов выполняет красноречивый запрос:

$record: Product::select(some_fields)
->with('flavours')
->get();

Продукты модальные, создайте функцию 'flavors':

public function flavours()
    {
        return $this->hasMany(UsedFlavours::class, 'product_id', 'id')
                    ->with(['flavour' =>function($query){
        $query->select(['flavour_name'])->where(anything);}]);
    }

Теперь в модели UsedFlavours:

public function feature(){
        return $this->belongsTo(Flavour::class,'flavour_id','id');
    }

Теперь в модели Flavor:

public function usedFeatures()
    {
        return $this->belongsTo('UsedFlavours','id');
    }   

Этот код не проверен, но это логика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...