1. controller中
use yii\data\Pagination;
$model = User::find();
$model = $model->where(['jihuo' => 7]);
$pages = new Pagination(['totalCount' => $model->count()]);
$models = $model->offset($pages->offset)
->limit($pages->limit)
->all();
return $this->render('index', [
'models' => $models,
'pages' => $pages,
]);
1. 视图中
<?= yii\widgets\LinkPager::widget([
'pagination' => $pager,
]) ?>
这只是最原始的版本
1. 修改视图中分类样式
默认是这样的:
- 可以修改分页样式
<?= LinkPager::widget([
'pagination' => $pages,
'nextPageLabel' => '下一页',
'prevPageLabel' => '上一页',
'firstPageLabel' => '首页',
'lastPageLabel' => '尾页',
'hideOnSinglePage' => false,
'maxButtonCount' => 5,
'options' => ['class' => 'm-pagination'],
]); ?>
2. 修改控制器中Pagination组件
$pages = new Pagination([
'totalCount' => $totalCount,
'pageSize' => 5,
]);
到这基本结束了,但大招才刚刚开始酝酿
- 在做项目的时候,遇到上万条的数据分页时,刷新页面超级慢,这边聊一下解决方法
$model = User::find();
$pager = new Pagination(['totalCount' => $query->count();]);
$model = $model->offset($pager->offset)->limit($pager->limit);
$query = User::find()->select('*')->from(['t1' => User::tableName(), 't2' => $model])->where('t1.id=t2.id');
$bankData = $query->all();
SELECT t1.* FROM user t1, (SELECT id FROM user LIMIT 0,20 ) t2 WHERE t1.id=t2.id;