当我尝试嵌套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": []
}
你忘了指出你的外键:
$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);
我最近遇到了类似的问题。
如果您急于加载选择列,首先要确保在迁移表上设置主键可能会有所帮助。
其次,我能够通过将您正在访问的关系上的外键作为select参数传递来解决我的问题。例如:
...
},'pages.articles'=> function ($query) {
$query->select('id', 'page_id', 'images','areas');
...
我这样修理它
$content =Journal::with(['pages:id_journal,id','pages.articles:id_page,titre'])->select('id','titre','date')->findOrFail($id);
是的关于外键