当我尝试像这样嵌套Eager加载
$journal = Journal::with(['pages','pages.articles'])->select('id','titre','date')->findOrFail($id);
这是可行的,但是当我尝试为嵌套关系添加选择以仅获得特定列时,如下所示:
$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": []
}
答案 0 :(得分: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);
答案 1 :(得分:0)
我最近有一个类似的问题。
由于您渴望加载选择的列,因此首先确保在我们的迁移表上设置了主键可能会有所帮助。
第二,我还可以通过将要访问的关系上的外键作为选择参数传递给我,从而解决问题。例如:
...
},'pages.articles'=> function ($query) {
$query->select('id', 'page_id', 'images','areas');
...
答案 2 :(得分:0)
我这样解决
$content =Journal::with(['pages:id_journal,id','pages.articles:id_page,titre'])->select('id','titre','date')->findOrFail($id);
是关于外键
的