注:這裏說的是前後端分離的方式,前端可以用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;
}
哈哈,是不是很簡單!