Laravel Nested Eager Загрузка и выбор - PullRequest
0 голосов
/ 07 марта 2019

Когда я пытаюсь использовать вложенную загрузку Eager следующим образом

 $journal = Journal::with(['pages','pages.articles'])->select('id','titre','date')->findOrFail($id);

Это работает, но когда я пытаюсь добавить select для вложенных отношений, чтобы получить только определенный столбец, подобный этому:

 $journal =Journal::with(['pages'=> function ($query) {
        $query->select('id','thumbnail');
    },'pages.articles'=> function ($query) {
        $query->select('id','images','areas');
    }])->findOrFail($id);

Я получаю только родительскую модель (Journal) с пустым pages

  {
   "id": 3,
   "numero": "2219",
   "titre": "J2219",
   "date": "2018-12-13",
   "created_at": "2019-01-03 10:16:59",
   "updated_at": "2019-01-08 11:04:42",
   "deleted_at": null,
   "pages": []
}

Ответы [ 3 ]

1 голос
/ 07 марта 2019

Вы забыли указать свой внешний ключ:

$journal = Journal::with(['pages'=> function ($query) {
        $query->select(['id','journal_id','thumbnail']);
    },'pages.articles'=> function ($query) {
        $query->select(['id','page_id','images','areas']);
    }])->findOrFail($id);
0 голосов
/ 07 марта 2019

Я исправляю это так

$content =Journal::with(['pages:id_journal,id','pages.articles:id_page,titre'])->select('id','titre','date')->findOrFail($id);

да, это примерно внешний ключ

0 голосов
/ 07 марта 2019

У меня недавно была похожая проблема.

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

Во-вторыхЯ смог решить свою проблему, передав также внешний ключ отношения, к которому вы обращаетесь, в качестве аргумента выбора.Например:

...

},'pages.articles'=> function ($query) {
    $query->select('id', 'page_id', 'images','areas');

...
...