控制器代码
public function actionIndex() { $name = YII::$app->request->get('name', ''); $status = YII::$app->request->get('status', ''); // 拼接查询条件方案1 $where = '1=1 '; $param = []; // 如果查询条件很多,可以按这种方式,拼where条件 if (!empty($name)) { $where .= "AND name=:name"; $param = array_merge($param, [':name' => $name]); } if (!empty($status)) { $where .= " AND status=:status"; $param = array_merge($param, [':status' => $status]); } $query = Book::find()->where($where, $param); // 拼接查询条件方案2 // $map = []; // if (!empty($name)) { // $map = array_merge($map, ['name' => $name]); // } // // if (!empty($status)) { // $map = array_merge($map, ['status' => $status]); // } // // $query = Book::find()->where($map); // 设置分页大小,为了演示,我写成了2 $pageSize = 2; // 得到文章的总数(但是还没有从数据库取数据) $count = $query->count(); // 创建分页组件 $page = new Pagination([ // 总的记录条数 'totalCount' => $count, // 分页大小 'pageSize' => $pageSize, // 设置地址栏当前页数参数名 'pageParam' => 'page', // 设置地址栏分页大小参数名 'pageSizeParam' => 'pageSize', ]); // 获取数据 $data = $query->orderBy('id DESC') ->offset($page->offset) ->limit($page->limit) ->asArray() ->all(); return $this->renderPartial('page', [ 'data' => $data, 'page' => $page, ]); }
视图代码: