我面对的是一个简单的要求 - 搜索位置等于$ locationId且具有特定服务($ serviceId)的所有个人资料,但我不知道如何添加通过数据透视表查询的where条件?
我的模型如下:
class Profile extends Model {
public function services() {
return $this->belongsToMany('Service', 'profile_services', 'profile_id', 'service_id');
}
}
class Service extends Model {}
我想做的事情就是这样:
$results = Profile::where('location_id', '=', $locationId)->where('services.id', '=', $serviceId)->get();
注意我知道->where('services.id', '=', $serviceId)
不正确(我已经把它放在这里以便更好地解释我想要实现的目标)但是我&# 39;我想知道我是使用Eloquent还是数据库查询构建器来做到这一点。
答案 0 :(得分:6)
您可以使用whereHas
$results = Profile::where('location_id', '=', $locationId)
->whereHas('services', function($query) use ($serviceId){
$query->where('services.id', '=', $serviceId);
})->get();