我有一个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();如何选择所有具有所提供功能的 all 的住宿?
预先感谢您的帮助,并为(可能)误导性标题表示歉意。我想不出比这更合适的事了。
发布于 2015-09-28 08:40:02
使用whereHas()方法的额外参数:
whereHas($relation, Closure $callback, $operator = '>=', $count = 1)即:
Accomodation::whereHas('features', function($q) use ($features) {
$q->whereIn('features.id', $features);
}, '>=', count($features))->get();发布于 2015-09-28 08:45:46
其中绝对是错误的。试着循环使用您的功能:
for each($features as feature)
$q->where('features.id', feature);https://stackoverflow.com/questions/32818305
复制相似问题