Eloquent WhereHas所有相关记录

时间:2017-04-17 23:36:52

标签: laravel eloquent

我的laravel应用程序中有BusinessServices模型。一个企业可以有很多Services(通过business_services链接表)。我正在尝试创建一个搜索功能,这将允许我传递一系列服务,我想通过雄辩的搜索提供这些服务的所有业务。

到目前为止,我已经想出了这个:

Business::all()
->whereHas('services', function($q) use ($treatments_wanted) {
    $q->where('service_id', $services_array);
})

但问题在于它会显示至少有一项附加服务的企业,我想列出$services_array中列出的所有服务的企业。

有人可以解释最有效的方法吗?

1 个答案:

答案 0 :(得分:1)

我认为您需要遍历所有服务并添加whereHas()。试一试:

$query = Business::all();

foreach ($services_array as $service) {
    $query->whereHas('services', function($q) use ($service){
        $q->where('service_id', $service);
    });
}

$businesses = $query->get();