Eloquent:急切加载选择约束?可能?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Eloquent:急切加载选择约束?可能?相关的知识,希望对你有一定的参考价值。

基本上这是有效的

Section::with('fields')->find($id);

也:

Section::with(['fields' => function ($q) {
    $q->select('*');
}])->find($id);

然而:

Section::with(['fields' => function ($q) {
    $q->select('label', 'position');
}])->find($id);

不会加载关系。

我没有在文档中找到关于急切加载约束的东西,除了使用'where',所以我的问题是,这甚至可能吗?

提前致谢。

答案

啊,原来你必须在select子句中明确包含section_id :)

所以这将按预期工作:

Section::with(['fields' => function ($q) {
    $q->select('section_id', 'label', 'position');
}])->find($id);
另一答案

我使用iwyg的响应,但我认为select中的第一个元素是连接这些表的键。在iwyg的示例节​​目中,表字段使用键section_id与表部分连接,这就是为什么select中的第一个元素。

以上是关于Eloquent:急切加载选择约束?可能?的主要内容,如果未能解决你的问题,请参考以下文章

在 Eloquent 急切加载中选择特定字段不起作用

急切加载时为 Eloquent 关系别名

急切加载 Laravel Eloquent 相关模型

Laravel Eloquent 中的急切加载

Laravel 混合获取 Eloquent 急切加载嵌套多个模型

laravel eloquent - 在嵌套急切加载的关系上不使用