在Laravel中使用load方法时指定列?

时间:2016-03-18 16:25:58

标签: php laravel laravel-5 eager-loading

在Laravel中使用LOAD方法时是否可以指定某些列,因为我不希望选择所有列。

假设我有这个:

$usersWithDepartments = User::with('department')->get();

这可能吗?

$usersWithDepartments = $usersWithDepartments->load('equipment', function($query)
{
    $query->select('table_equipment.name');
})

我尝试在加载方法之后使用select方法,但是它说“select method not exists”

解决方法?

2 个答案:

答案 0 :(得分:0)

是的,您可以指定列,而不是select(),使用get()

这是示例

$usersWithDepartments = $usersWithDepartments->load('equipment'=> function($query)
{
    $query->get(['equipment.name', 'equipment.title']);
})

答案 1 :(得分:0)

将其更改为

$usersWithDepartments->load(['equipment'=>function($query)
{
    $query->select('user_id','table_equipment.name');
}])

load 如果要将闭包传递给它作为第二个参数,则接受一个数组。并且不要忘记将user_id传递给select或您的相关记录将不会被加载