# Laravel数组分页

来源:互联网 发布:怎么登录淘宝网电脑版 编辑:程序博客网 时间:2024/06/06 10:02

为何要使用数组分页

laravel的官方文档给出了一种分页的方式simplePaginate();这种也就是简单的分页,你在页面上显示的话只有上一页还有下一页

还有一种稍微复杂点的分页paginate();这种算是复杂分页,然后也支持挑战到哪个页,也有一些列页。但是使用过程中会发生一些问题,这就是为什么我要写这篇文章的原因,我们在数据库筛选的时候如果使用了groupBy(),那么我们就无法使用这个自带的分页。具体原因我也没研究过,反正代码会报错,我google了一下,发现也有人提类似的问题

然后我们仔细阅读官方文档我们会发现,其实官方文档里面已经有写如何自己使用分页类去分页了,只不过他没详细说明,只说了个大概。反正就是叫我们自己去看LengthAwarePaginator(代表正常分页)Paginator(代表简单分页)。有时候我们筛选的结果就是要groupBy,那没办法,只能我们手动去实现了。

数组分页的实现

 $list = [];//你查询出来的结果 $page = Request::get('page', 1); // 获取页码 $perPage = 15;//每页的条数 $offset = ($page * $perPage) - $perPage;//计算每页分页的初始位置 $list = new LengthAwarePaginator(array_slice($list,$offset,$perPage,true),count($list),$perPage, $page,['path' => Request::url(), 'query' => Request::query()])

实际上这样就已经实现了数组分页,有兴趣的同学可以点进去这个类看看这个类的构造方法。其实就会明白我传的这些参数的意思了,其实它就是相当于每次页面访问控制器的时候,得到页数,然后根据每页的条数计算出这时候页面上要显示的内容,其实就是每次通过array_slice()来取每个页面的值而已

0 0
原创粉丝点击