Yii 2.0 中使用分页 [ 2.0 版本 ]
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' => '上一页', //'nextPageLabel' => false, // 不显示上下页按钮 //'prevPageLabel' => false, 'firstPageLabel' => '首页', // 设置首页尾页按钮 'lastPageLabel' => '尾页', 'hideOnSinglePage' => false, // 当你数据不足2页时,分页默认不显示,但你可以让他显示出来 'maxButtonCount' => 5, // 分页 页码默认显示10页,不过你可以自由设置,比如显示5页 'options' => ['class' => 'm-pagination'], // 可以给分页添加class 然你你想换个颜色,居个中啊 ]); ?>
2. 修改控制器中Pagination组件
$pages = new Pagination([ 'totalCount' => $totalCount, 'pageSize' => 5, // 分页默认条数是20条,但你可以随意设置 例如 5条 ]);
到这基本结束了,但大招才刚刚开始酝酿
- 在做项目的时候,遇到上万条的数据分页时,刷新页面超级慢,这边聊一下解决方法
// 在控制器中做分页时
$model = User::find();
//分页
$pager = new Pagination(['totalCount' => $query->count();]);
// 这边我的理解是先实例化好分页的20条数据,但不查出来
$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();// 这样查出来的速度就非常快
// 贴一下sql原型,方便理解
SELECT t1.* FROM user t1, (SELECT id FROM user LIMIT 0,20 ) t2 WHERE t1.id=t2.id;
smart
注册时间:2017-11-01
最后登录:2019-02-12
在线时长:23小时2分
最后登录:2019-02-12
在线时长:23小时2分
- 粉丝3
- 金钱60
- 威望50
- 积分790
共 1 条评论
你这个有问题的,$model = User::find()->select('id');