当数据过多,无法一页显示时,我们经常会用到分页组件,YII2中已经帮我们封装好了分页组件。
首先我们创建操作数据表的AR模型:
然后创建分页的控制器:
request->get('name', ''); $where = '1=1 '; $param = []; //如果查询条件很多,可以按这种方式,拼where条件 if (!empty($name)) { $where .= "AND name=:name"; $param = array_merge($param, [':name' => $name]); } //设置分页大小,为了演示,我写成了2 $pageSize = 2; $user = MyUser::find()->where($where, $param); //创建分页组件 $page = new Pagination([ //总的记录条数 'totalCount' => $user->count(), //分页大小 'pageSize' => $pageSize, //设置地址栏当前页数参数名 'pageParam' => 'p', //设置地址栏分页大小参数名 'pageSizeParam' => 'pageSize', ]); //获取数据 $data = $user->orderBy('id DESC') ->offset($page->offset) ->limit($page->limit) ->asArray() ->all(); return $this->renderPartial('index', [ 'data' => $data, 'page' => $page, ]); }}
最后就是显示数据分页:
分页显示
最后效果如下: