我有这样的代码
$query->whereHas('filters',function($q) use ($filters) {
$q->where('filter_id', $filters[0]);
for($i = 1; $i < count($filters); $i++)
{
$q->orWhere('filter_id', $filters[$i]);
}
});
问题是,当搜索一个过滤器( count($filters) == 1 )
时,结果是正确的,并显示与该过滤器相关的项目,但当我搜索多个过滤器( count($filters) > 1 )
时,结果是db中的所有项目,就像没有搜索一样
我认为您可以完成与wherein
呼叫相同的事情。
$query->whereHas('filters', function($q) use ($filters){
$q->whereIn('filter_id',$filters);
});