【发布时间】:2021-03-12 15:16:02
【问题描述】:
模型 A 与模型 B 具有 BelongsTo。模型 B 与模型 C 具有 BelogsTo
所以,我需要进行查询,我需要从模型 A 中获取 *,从模型 B 中获取 2 列,从模型 C 中获取其他 2 列
ModelA::query()
->with([
'relationModelB' => function ($query) {
$query->select('id', 'column');
},
'relationModelB.relationModelC' => function ($query) {
$query->select('id', 'column');
}
])
->where('id', $id)
->first();
这从A返回所有,从B返回2列,但C返回null。
如果,我尝试这个查询,它返回良好,所有列来自 3 个模型。
ModelA::query()
->with(['relationModelB', 'relationModelB'])
->where('id', $id)
->first();
第一个查询中缺少什么,从关系的关系中获取特定列?
【问题讨论】:
-
欢迎来到 SO ...您必须确保选择关系所需的任何列(ID、外键)
-
就像我说的,如果我不指定,列,比如 select * from,一切都很好,但是列太多了......