1

フィルター where 条件で配列要素を渡そうとしています。

getFacilityID() 関数

 public function getFacilityID()
    {
        $facArray= array();

        $facilityName = Facility::find()->where(['company_id' => \Yii::$app->user->identity->company_id])->all();
        foreach ($facilityName as $facName){
            $facArray[] = $facName->facility_id;
        }  
         //   var_dump($facArray); exit();
            return $facArray;


    }

ここではgetFacilityID()関数を使用してフィルタリングしています

 $query->orFilterWhere(['like', 'area_name', $this->area_name])
                ->andFilterWhere(['like', 'facility_id', $this->getfacilityID()]);

問題は、複数の施設がある場合、エリアが表示されないことです。

"->andFilterWhere(['like', 'facility_id', $this->getfacilityID()]); "

太字のコードが問題を引き起こしています。getfacilityId() に複数の配列要素がある場合、領域にデータが表示されません。getFacilityId() に要素が 1 つしかない場合、データは正しく表示されます。これの解決策を得ることができますか??

前もって感謝します..

4

2 に答える 2

2

Topherが述べたように、like で配列を使用することはできません。そのため、クエリを In condition に変更しました。

 $query->orFilterWhere(['like', 'area_name', $this->area_name])     
        ->andFilterWhere(['in', 'facility_id', $this->getFacilityID()]);

詳細: http://www.yiiframework.com/doc-2.0/yii-db-queryinterface.html#where()-detail

于 2016-07-13T11:47:51.060 に答える