我的laravel应用程序中有Business
和Services
模型。一个企业可以有很多Services
(通过business_services链接表)。我正在尝试创建一个搜索功能,这将允许我传递一系列服务,我想通过雄辩的搜索提供这些服务的所有业务。
到目前为止,我已经想出了这个:
Business::all()
->whereHas('services', function($q) use ($treatments_wanted) {
$q->where('service_id', $services_array);
})
但问题在于它会显示至少有一项附加服务的企业,我想列出$services_array
中列出的所有服务的企业。
有人可以解释最有效的方法吗?
答案 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();