yii2實現後端分頁和模糊查詢

注:這裏說的是前後端分離的方式,前端可以用vue+element,不管用什麼,只要能把需要的參數傳給後端就OK

1.前端需要傳的主要參數包括:

listQuery: { //動態請求table數據時傳遞的參數
        page_no: 1, //頁碼
        page_size: 10,//每頁顯示條數
        role: null,//角色--選填
        username: null,//用戶名--選填
        partantuser: getUserName(),//上級用戶名--選填
      },

2.下面開始後端獲取參數並進行模糊查詢和分頁後返回

在controller中獲取到參數並傳給model進行處理,然後獲取到數據並返給前端

public function actionGetalluser()
    {
        $request = Yii::$app->request;
        $post = $request->post();
        $username = $request->post('username');
        $role = $request->post('role');
        $page_no = $request->post('page_no',1);
        $page_size = $request->post('page_size');
        $partantuser = $request->post('partantuser');
        $partant = userinfo::getusermsg($partantuser);//獲取到上級用戶的信息
        $userinfo = [
            'username' => $username,
            'role' => $role,
            'page_no' => $page_no,
            'page_size' => $page_size,
            'partantid' => $partant['id']
        ];
        $getallusermsg = userinfo::getallusermsg($userinfo); //將從前端獲取到的數據傳遞給model
        if ($getallusermsg) {
            echo json_encode($getallusermsg);
        } else {
            echo json_encode(['code' => 201,'data' => '','message' => '獲取用戶信息失敗!']);
        }
    }

model中獲取到controller中傳遞的參數,並從數據庫中查詢並以分頁和模糊查詢的方式傳遞給controller

public static function getallusermsg($userinfo)
	{
        $query = self::find()->where(['partantid' => $userinfo['partantid']]);
        if ($userinfo['username']) {
            $query->andWhere(['like', 'username', $userinfo['username']]); //link爲模糊查詢
        }
        if ($userinfo['role']) {
            $query->andWhere(['role' => $userinfo['role']]);
        }
        //進行後端分頁
        $startpage = ($userinfo['page_no'] -1) * $userinfo['page_size'];
        $count = $query->offset($startpage)->count();
        $data = $query->limit($userinfo['page_size'])->offset($startpage)->asArray()->all();
        $dataall = [
            'code' => 200,
            'data' => [
                'count' => (int)$count,
                'data' => $data,
                'page_count' =>ceil($count/$userinfo['page_size'])
            ],
            'message' => '獲取用戶信息成功!'
        ];
        return $dataall;
	}

哈哈,是不是很簡單!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章