【发布时间】:2021-01-21 16:43:19
【问题描述】:
我正在使用 Laravel 8。我有 2 个表并尝试使用 Eloquent 从两个表中选择特定列:
$ids = [1, 8, 14];
$food = Food::with(
['animals' => function ($query)
{
$query->select('id', 'name');
$query->where('status', 1);
}])
->select('id', 'type')
->whereIn('id', $ids)
->where('status', 1)
->get();
但是,如果我向 Food 模型添加 select 方法,Laravel 会为 animals 表返回 null。
如果我没有在 Food 模型上指定选择,Laravel 会从 Food 模型和 id、name 中返回 animals 表中的所有内容。
如何在使用 Eager Loading 时同时从 Food 和 Animal 表中进行选择?
【问题讨论】:
-
您必须确保还选择了关系所需的任何外键
-
可以分享
animals关系函数吗? -
@lagbox 这就是问题所在,非常感谢您指出。我从选择查询中遗漏了一个外键!如果您创建一个答案,我会批准它!
-
在这种情况下哪个表有外键,顺便说一句?
-
@lagbox
animals表。我将它添加到food表的选择中,它立即生效。