예제 #1
0
 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;
 }
예제 #2
0
 /**
  * @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;
 }
예제 #3
0
 /**
  * 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;
 }
예제 #4
0
 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];
 }