public function search($params) { $query = self::find(); $dataProvider = new \yii\data\ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 20], 'sort' => ['defaultOrder' => ['id' => SORT_DESC]]]); $dataProvider->sort->attributes['userName'] = ['asc' => ['user_id' => SORT_ASC], 'desc' => ['user_id' => SORT_DESC]]; $dataProvider->sort->attributes['postTitle'] = ['asc' => ['post_id' => SORT_ASC], 'desc' => ['post_id' => SORT_DESC]]; $query->joinWith(['post', 'user']); if ($this->load($params) && $this->validate()) { $query->andFilterWhere(['post_id' => $this->post_id]); $query->andFilterWhere(['like', Post::tableName() . '.title', $this->postTitle]); if (!is_null($this->userName) && $this->userName != '') { $userName[] = explode(' ', $this->userName); foreach ($userName as $item) { $query->andFilterWhere(['or', ['like', Profile::tableName() . '.name', $item]]); } } if (($time = strtotime($this->created_at)) > 0) { $query->andFilterWhere(['>', 'created_at', $time]); $query->andFilterWhere(['<', 'created_at', $time + 24 * 60 * 60]); } } return $dataProvider; }
/** * @param $params * * @return ActiveDataProvider */ public function search($params) { $query = self::find()->addSelect([User::tableName() . '.*', Profile::tableName() . '.name'])->joinWith('profile'); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => []]); $dataProvider->sort->attributes['name'] = ['asc' => [self::tableName() . '.id' => SORT_ASC], 'desc' => [self::tableName() . '.id' => SORT_DESC]]; if ($this->load($params) && $this->validate()) { if ($this->created_at !== null) { $date = strtotime($this->created_at); $query->andFilterWhere(['between', 'created_at', $date, $date + 3600 * 24]); } if (!is_null($this->name) && $this->name != '') { $clientName[] = explode(' ', $this->name); foreach ($clientName as $item) { $query->andFilterWhere(['like', Profile::tableName() . '.name', $item]); /*$query->andFilterWhere(['or', ['like', Profile::tableName() . '.name', $item], ['like', Profile::tableName() . '.surname', $item] ]);*/ } } $query->andFilterWhere(['like', 'email', $this->email]); } return $dataProvider; }
/** * Search categories list * @param $params * @return \yii\data\ActiveDataProvider */ public function search($params, $parentIsNull = false) { $query = static::find()->with(['from']); $dataProvider = new \yii\data\ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 10], 'sort' => ['defaultOrder' => ['id' => SORT_DESC]]]); if ($this->load($params) && $this->validate()) { $query->andFilterWhere(['like', 'content', $this->content]); $query->andFilterWhere(['from_id' => $this->from_id]); $query->andFilterWhere(['is_blocked' => $this->is_blocked]); if ($parentIsNull) { $query->andWhere(['parent_id' => $this->parent_id]); } else { $query->andFilterWhere(['parent_id' => $this->parent_id]); } if ($this->user_name) { $query->andFilterWhere(['or', ['like', Profile::tableName() . '.name', Yii::$app->request->get('name', NULL)], ['like', Profile::tableName() . '.surname', Yii::$app->request->get('name', NULL)]]); } } return $dataProvider; }
public function actionList() { Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $list = $this->finder->profileQuery->andFilterWhere(['or', ['like', Profile::tableName() . '.name', Yii::$app->request->get('name', NULL)], ['like', Profile::tableName() . '.surname', Yii::$app->request->get('name', NULL)]])->asArray()->limit(100)->all(); $result = []; foreach ($list as $item) { $result[] = ['id' => $item['user_id'], 'name' => "{$item['name']} {$item['surname']}"]; } return ['results' => $result]; }