我正在尝试
1. select `DOS`,`name`,`fin`,`ins_type` from events table.
2. site_name from sites table
3. client_name from clients table
但无法访问select语句中的site_name,client_name列
->select('DOS','name','fin','ins_type')
如何在上面的select语句中添加这些列site.site_name
,client.client_name
。
Eloquent查询
$events = Event::with([
'site'=>function($q){
$q->select('site_id','site_name','client_id');
},
'site.client'=>function($q2){
$q2->select('client_id','client_name');
}])
->select('DOS','name','fin','ins_type')
->get();
答案 0 :(得分:1)
这个怎么样?
$events = Event::with([
'site'=>function($q){
$q->with(['client'=>function($qq){
$qq->select('client_id','client_name');
}])->select('site_id','site_name','client_id');
}])
->select('DOS','name','fin','ins_type')
->get();
答案 1 :(得分:0)
我在here的评论部分找到了一个简单的解决方案。可以将列选择放在模型中。所以在你的情况下,你的事件模型可能是这样的。
public function site()
{
return $this->belongsTo('App\Site')->select('id', 'name', 'client_id');
}
然后,在您的控制器中,您只需调用该功能。
$events = Event::with('site')->get();
我还没有尝试过如何使用嵌套的预先加载。
答案 2 :(得分:0)
我自己也遇到了一些问题,直到我发现你需要将外键添加到“with”闭包内的select语句中。
将“客户”与“网站”和“网站”与“活动”相关联的列