Laravel从具有一个或多个类别的数据库中获取数据

时间:2018-07-21 19:38:23

标签: php laravel

我正在尝试进行过滤,但取得了一些成功,但不是我想要的。

代码是这样的:

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变量是一个数组。

它需要做的是退还一个或多个拥有我选择的设施的公寓(或拥有更多设施但也具有所选设施的公寓),但是我得到的是拥有该设施的公寓至少拥有一套公寓的设施。

我该怎么做才能退还拥有所选设施的公寓?

1 个答案:

答案 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()