Example #1
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = User::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     /**
      * Setup your sorting attributes
      * Note: This is setup before the $this->load($params)
      * statement below
      */
     $dataProvider->setSort(['attributes' => ['id', 'userIdLink' => ['asc' => ['user.id' => SORT_ASC], 'desc' => ['user.id' => SORT_DESC], 'label' => 'User'], 'userLink' => ['asc' => ['user.username' => SORT_ASC], 'desc' => ['user.username' => SORT_DESC], 'label' => 'User'], 'profileLink' => ['asc' => ['profile.id' => SORT_ASC], 'desc' => ['profile.id' => SORT_DESC], 'label' => 'Profile'], 'roleName' => ['asc' => ['role.role_name' => SORT_ASC], 'desc' => ['role.role_name' => SORT_DESC], 'label' => 'Role'], 'statusName' => ['asc' => ['status.status_name' => SORT_ASC], 'desc' => ['status.status_name' => SORT_DESC], 'label' => 'Status'], 'userTypeName' => ['asc' => ['user_type.user_type_name' => SORT_ASC], 'desc' => ['user_type.user_type_name' => SORT_DESC], 'label' => 'User Type'], 'created_at' => ['asc' => ['created_at' => SORT_ASC], 'desc' => ['created_at' => SORT_DESC], 'label' => 'Created At'], 'email' => ['asc' => ['email' => SORT_ASC], 'desc' => ['email' => SORT_DESC], 'label' => 'Email']]]);
     if (!($this->load($params) && $this->validate())) {
         $query->joinWith(['role'])->joinWith(['status'])->joinWith(['profile'])->joinWith(['userType']);
         return $dataProvider;
     }
     $this->addSearchParameter($query, 'user.id');
     $this->addSearchParameter($query, 'username', true);
     $this->addSearchParameter($query, 'email', true);
     $this->addSearchParameter($query, 'role_id');
     $this->addSearchParameter($query, 'status_id');
     $this->addSearchParameter($query, 'user_type_id');
     $this->addSearchParameter($query, 'created_at');
     $this->addSearchParameter($query, 'updated_at');
     // filter by role
     $query->joinWith(['role' => function ($q) {
         $q->where('role.role_name LIKE "%' . $this->roleName . '%"');
     }])->joinWith(['status' => function ($q) {
         $q->where('status.status_name LIKE "%' . $this->statusName . '%"');
     }])->joinWith(['userType' => function ($q) {
         $q->where('user_type.user_type_name LIKE "%' . $this->userTypeName . '%"');
     }]);
     return $dataProvider;
 }
Example #2
0
 /**
  * Lists all User models.
  * @return mixed
  */
 public function actionIndex()
 {
     $searchModel = new UserSearch();
     $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
     return $this->render('index', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider]);
 }