我有一个模型类ServiceAgentRel。其中agent_id属于用户表。我正在用service_id 3获取所有列。
$agent_data = App\ServiceAgentRel::where(['service_id'=>3])->with('agent')->get();使用此代码,我可以使用service_id 3获得所有服务,但如果用户状态(与该agent_id对应的状态)不活动,则需要在user表上设置一个条件,不会获取任何行。我的主要要求是,我必须为关系函数代理()设置一个条件。还有从控制器那里检查它的方法吗?

class ServiceAgentRel extends Model {
public function agent(){
return $this->belongsTo('App\User', 'agent_id', 'id');
}
}我知道通过一个简单的联接就可以完成这个任务,但是我想知道是否可以通过雄辩的模型函数来完成这个任务。谢谢在这里输入图像描述
发布于 2016-03-31 09:38:30
为此您需要使用whereHas,就像这样
$agent_data = App\ServiceAgentRel::where(['service_id'=>3])->with('agent')
->whereHas('agent',function($query) {
$query->where('status', 'active');
})->get();发布于 2016-03-31 09:29:27
嗨,你可以这样做
$agent_data = App\ServiceAgentRel::where(['service_id'=>3])->first();
echo $agent_data->agent->name;发布于 2016-03-31 09:35:33
您可以使用以下语句:
$agent_data = App\ServiceAgentRel::where(['service_id'=>3])
->with(['agent' => function($query) {
$query->where('agent.status', 'active');
}])->get();https://stackoverflow.com/questions/36329295
复制相似问题