我有一个模型类ServiceAgentRel。其中agent_id属于用户表。我正在获取具有service_id 3的所有列。
$agent_data = App\ServiceAgentRel::where(['service_id'=>3])->with('agent')->get();
Run Code Online (Sandbox Code Playgroud)
使用此代码,我可以使用service_id 3获得所有服务,但是如果用户状态(与该agent_id对应的状态)处于非活动状态,则我将需要在用户表上设置一个条件,因此不会获取任何行。我的主要要求是,我必须在关系函数agent()上设置一个条件。还可以从控制器检查吗?
class ServiceAgentRel extends Model {
public function agent(){
return $this->belongsTo('App\User', 'agent_id', 'id');
}
}
Run Code Online (Sandbox Code Playgroud)
我知道可以通过简单的联接来完成此任务,但是我想知道通过雄辩的模型功能是否可以实现。谢谢在这里输入图片说明
为此,您需要使用wherehas
$agent_data = App\ServiceAgentRel::where(['service_id'=>3])->with('agent')
->whereHas('agent',function($query) {
$query->where('status', 'active');
})->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1119 次 |
| 最近记录: |