* @copyright (c), Thread */ class Article extends ParentModel implements BaseBackendSearchModel { public $title, $date_from, $date_to; /** * @return array */ public function rules() { $getFormatDate = Yii::$app->getModule('news')->getFormatDate(); return [ [['alias', 'title'], 'string', 'max' => 255], [['published'], 'in', 'range' => array_keys(self::statusKeyRange())], [['group_id'], 'integer'], [ ['published_time'], 'date', 'format' => 'php:' . $getFormatDate, 'timestampAttribute' => 'published_time' ], [ ['date_from'], 'date', 'format' => 'php:' . $getFormatDate, 'timestampAttribute' => 'date_from' ], [ ['date_to'], 'date', 'format' => 'php:' . $getFormatDate, 'timestampAttribute' => 'date_to' ], ]; } /** * * @return array */ public function scenarios() { return Model::scenarios(); } /** * @param ActiveQuery $query * @param array $params * @return ActiveDataProvider */ public function baseSearch($query, $params) { /** @var ParentModule $module */ $module = Yii::$app->getModule('news'); $dataProvider = new ActiveDataProvider([ 'query' => $query, 'pagination' => [ 'pageSize' => $module->itemOnPage ], 'sort' => [ 'defaultOrder' => [ 'published_time' => SORT_DESC ] ] ]); if (!($this->load($params) && $this->validate())) { return $dataProvider; } $query->with(['group', 'group.lang']); $query->andFilterWhere(['like', 'alias', $this->alias]) ->andFilterWhere(['=', 'published', $this->published]) ->andFilterWhere(['=', 'published_time', $this->published_time]) ->andFilterWhere(['=', 'group_id', $this->group_id]); // $query->andFilterWhere(['>=', 'published_time', $this->date_from]); $query->andFilterWhere(['<=', 'published_time', $this->date_to]); // $query->andFilterWhere(['like', ParentLang::tableName() . '.title', $this->title]); return $dataProvider; } /** * @param array $params * @return ActiveDataProvider */ public function search($params) { $query = ParentModel::find()->joinWith(['lang'])->undeleted(); return $this->baseSearch($query, $params); } /** * @param array $params * @return ActiveDataProvider */ public function trash($params) { $query = ParentModel::find()->joinWith(['lang'])->deleted(); return $this->baseSearch($query, $params); } }