Exemple #1
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = BooksSearch::find();
     $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['attributes' => ['id', 'name', 'preview', 'author_id', 'date', 'date_create', 'fullname']]]);
     $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;
     }
     $query->select(['CONCAT(authors.firstname, " ", authors.lastname) fullname', 'books.*'])->joinWith('author');
     $query->andFilterWhere(['id' => $this->id, 'date_create' => $this->date_create, 'date_update' => $this->date_update, 'date' => $this->date, 'author_id' => $this->author_id]);
     $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'preview', $this->preview]);
     if (!$this->date_from && $this->date_to) {
         // Если нет даты "с", установим минимальную
         $date_from = '0000-01-01';
         $date_to = Yii::$app->formatter->asDateSlash2Hyphen($this->date_to);
     } elseif ($this->date_from && !$this->date_to) {
         // Если нет даты "до", поставим сегодняшнюю, тк дата добавления не может быть из будущего
         $date_from = Yii::$app->formatter->asDateSlash2Hyphen($this->date_from);
         $date_to = date("Y-m-d");
     } elseif ($this->date_from && $this->date_to) {
         $date_from = Yii::$app->formatter->asDateSlash2Hyphen($this->date_from);
         $date_to = Yii::$app->formatter->asDateSlash2Hyphen($this->date_to);
     } else {
         $date_from = '';
         $date_to = '';
     }
     $query->andFilterWhere(['between', 'date', $date_from, $date_to]);
     return $dataProvider;
 }