基本上这是有效的
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',所以我的问题是,这甚至可能吗?
提前致谢。
答案 0 :(得分:2)
啊,事实证明你必须在select子句中明确包含section_id
:)
所以这将按预期工作:
Section::with(['fields' => function ($q) {
$q->select('section_id', 'label', 'position');
}])->find($id);
答案 1 :(得分:0)
我使用iwyg的响应,但是我认为select内的第一个元素是连接这些表的键。在iwyg显示的示例中,表字段与表部分通过键section_id连接在一起,这就是为什么它是select内的第一个元素。
答案 2 :(得分:0)
最近几天我遇到了同样的问题,我找不到任何解决方案,因此,现在我已经找到了解决方案,我想与遇到相同问题的任何人共享该解决方案。 为了使用外键的in函数,您需要为表赋予函数外键。您要使用段的关系,因此需要为函数赋予值以查找关系,因此,如果在字段表中具有“ section_id”之类的关系,则需要使用此代码:
Section::with(['fields' => function ($q) {
$q->select('id','section_id','label', 'position');
}])->find($id);
对于Laravel 5.7 *,您也可以使用“急切加载特定列”作为以下链接: enter link description here