コード例 #1
0
 /**
  * Creates data provider instance with search query applied
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = RealEstateModel::find()->andFilterWhere(['active' => 1, 'enabled' => 1]);
     $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['created_at' => SORT_DESC]], 'pagination' => ['defaultPageSize' => $this->pageSize, 'route' => $this->route, 'forcePageParam' => false]]);
     // Default values hack
     $get = Yii::$app->request->get();
     if ($get && !($this->load($params) && $this->validate())) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $category = Yii::$app->request->get('realEstateCategory', null);
     if ($category) {
         $query->andFilterWhere(['in', 'status', RealEstateModel::combinedStatuses()[$category]]);
     }
     $type = Yii::$app->request->get('realEstateType', null);
     if ($type) {
         $query->andFilterWhere(['in', 'type', RealEstateModel::combinedTypes()[$type]]);
     }
     $query->andFilterWhere(['like', 'city', $this->city]);
     if ($this->minPrice) {
         $query->andFilterWhere(['>', 'price', $this->minPrice]);
         $query->andFilterWhere(['hide_price' => 0]);
     }
     if ($this->maxPrice) {
         $query->andFilterWhere(['<', 'price', $this->maxPrice]);
         $query->andFilterWhere(['hide_price' => 0]);
     }
     return $dataProvider;
 }