我正在尝试进行过滤,但取得了一些成功,但不是我想要的。
代码是这样的:
public function scopeSearch( $query , $search )
{
if ( isset( $search['facility'] ) ) {
$facilities = $search['facility'];
$query->whereHas( 'facility' ,
function ( $q ) use ( $facilities ) {
$q->where( 'facility_id' , $facilities );
}
);
}
return $query;
}
Facilities变量是一个数组。
它需要做的是退还一个或多个拥有我选择的设施的公寓(或拥有更多设施但也具有所选设施的公寓),但是我得到的是拥有该设施的公寓至少拥有一套公寓的设施。
我该怎么做才能退还拥有所选设施的公寓?
答案 0 :(得分:0)
似乎您可能需要使用foreach()
遍历数组,以确保它具有数组的所有成员:
$facilities = $search['facility'];
foreach( $facilities as $one_facilities ){
$query->whereHas( 'facility' ,
function ( $q ) use ( $one_facilities ) {
$q->where( 'facility_id' , $one_facilities );
}
);
}
如果您只想在一些设施上进行匹配(例如,返回从3个设施中选择2个的结果),则可能还需要使用orWhere()
。