我有一个Accomodation
和一个Feature
模型。通过accomodation_feature
数据透视表:
//accomodation model
public function features()
{
return $this->belongsToMany('Feature');
}
我想选择已激活所有所选功能的所有住宿。例如,我希望所有住宿都有阳台,厨房和微波炉。
我尝试了以下但我得到的每个住宿都有阳台或厨房或微波炉:
$features = array("1", "2", "3"); //id's of the features I want to select
$accomodations = Accomodation
::whereHas('features', function($q) use ($features)
{
$q->whereIn('features.id', $features);
})
->get();
如何选择所有提供的功能全部的住宿?
提前感谢您的帮助,并对(可能)误导性的标题感到抱歉。我想不出更合适的事情。
答案 0 :(得分:1)
使用whereHas()
方法的额外参数:
whereHas($relation, Closure $callback, $operator = '>=', $count = 1)
即:
Accomodation::whereHas('features', function($q) use ($features) {
$q->whereIn('features.id', $features);
}, '>=', count($features))->get();
答案 1 :(得分:0)
其中绝对错误。尝试循环使用您的功能:
for each($features as feature)
$q->where('features.id', feature);