在Eloquent eager loading中选择特定字段不起作用

时间:2018-05-31 11:16:51

标签: sql laravel eloquent eager-loading

我有一个属于Notifications的{​​{1}}模型。我想在选择一组通知时加载用户,并仅使用Usernames加载模型。但是,使用select方法时,查询将返回null。

emails

如果$notifications->load(['user' => function($query){ $query->select(["name","email"]); }]); 方法的参数如下所示,则它给出了所有字段:

select()

3 个答案:

答案 0 :(得分:6)

也许选择这样的字段可以解决问题:

$notifications->load('user:id,name,email');

您尝试的是设计添加约束,而不是选择某些字段

答案 1 :(得分:3)

只需添加主键列即可。

$notifications->load(['user' => function($query){
    $query->select(["ID","name","email"]);
}]);

这样可以将任何约束添加到查询中。

答案 2 :(得分:0)

如果用select感染数据,则必须传递Foreign_key。 看看

public function index()
{ 
    $employee = Employee::with(['pay_salary' => function($query){
       $query->select(['employee_id','salary_amount'])
             ->whereMonth('paying_date',\Carbon\Carbon::now()->month);
    },'getSalary:id,employeeID,salary'])->get();
    
    return View::make('admin.salary.index',['data' => $employee]);
}