Laravel Nested Eager正在加载并选择

问题描述 投票:0回答:3

当我尝试嵌套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": []
}
laravel eloquent eager-loading
3个回答
1
投票

你忘了指出你的外键:

$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
投票

我最近遇到了类似的问题。

如果您急于加载选择列,首先要确保在迁移表上设置主键可能会有所帮助。

其次,我能够通过将您正在访问的关系上的外键作为select参数传递来解决我的问题。例如:

...

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

...

0
投票

我这样修理它

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

是的关于外键

© www.soinside.com 2019 - 2024. All rights reserved.