0, ], [ [ 'time_to', ], 'compare', 'compareAttribute' => 'time_from', 'operator' => '>=', ], [ [ 'status', ], 'integer', 'min' => 1, 'max' => 2, ], ]; } public function search($params) { $query = PortfolioUser::find() ->where([ 'portfolio_user.user_id' => \Yii::$app->user->id ]); $dataProvider = new ActiveDataProvider([ 'query' => $query, ]); $this->load($params); if(!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } if(!empty( $this->time_from ) && !empty( $this->time_to )) { $query->andWhere([ 'between', 'time', $this->time_from, $this->time_to, ]); } elseif(!empty( $this->time_from )) { $query->andWhere([ '>=', 'time', $this->time_from, ]); } elseif(!empty( $this->time_to )) { $query->andWhere([ '<=', 'time', $this->time_to, ]); } $query->andFilterWhere(['status' => $this->status]); $query->andFilterWhere([ 'like', 'LOWER(position)', mb_strtolower($this->position), ]); $query->andFilterWhere([ 'like', 'LOWER(portfolio.name)', mb_strtolower($this->project), ]); return $dataProvider; } }