美文网首页
laravel 自带分页与 groupBy共用

laravel 自带分页与 groupBy共用

作者: 雨黎_95c0 | 来源:发表于2017-11-10 09:16 被阅读0次


对于laravel来说有很多自带功能,其中laravel的分页就很美观,但是在sql语句中使用groupBy和分页一起查询数据时 ------分页   死了

laravel 自定义分页是不能和groupBy一起使用的  因为laravel底层定义   如下图:

如图

不难看出,框架是取出所有的数据,然后通过array_slice来截取需要的数据段。

这种方式在数据量不大时完全没有问题,当前数据量过3000或更多时,就会报错,主要的错误是内存超出,本来框架查询出来的数据是以对象的形式返回,这样会大大的增加了内存开销。

如果这个时候还想使用框架自带的分页功能,就不能直接使用这个 paginate 函数来分页,必须另作处理:

public function getGroupPages(Builder $Builder,$perPage=null,$columns=array('*')){

$perPage = $perPage ?: $Builder->getModel()->getPerPage();

$Bindings=$Builder->getQuery()

->getConnection()

->prepareBindings($Builder->getBindings());

$BuilderPage=  clone $Builder;

$BuilderPage->getQuery()->orders=null;//去掉无意义的排序

$total=\DB::Connection($Builder->getModel()->getConnectionName())->select('select count(1) as num from ('.$BuilderPage->select($columns)->toSql().') as t',$Bindings)[0]->num;//取出总记录数

$paginator = $Builder->getQuery()->getConnection()->getPaginator();

$page = $paginator->getCurrentPage($total);

$results = $Builder->forPage($page, $perPage)->get($columns)->all();

return $paginator->make($results, $total, $perPage);

}

所以当想使用groupBy查询数据并使用laravel分页时,可以利用limit 及 offset代替laravel自定义分页查询。

原文:http://php2012web.blog.51cto.com/5585213/1579972

相关文章

  • laravel 自带分页与 groupBy共用

    对于laravel来说有很多自带功能,其中laravel的分页就很美观,但是在sql语句中使用groupBy和分页...

  • laravel自定义分页

    Paginate分页 手动分页详解 laravel自带的分页功能十分强大,只不过,在使用 groupBy 语句的分...

  • laravel 分页 使用layui样式

    laravel分页自带的事bootsharp的分页样式个人更喜欢layui的分页样式,下面介绍如何在laravel...

  • 数组或者对象分页

    有些数据需要进行手动分页,laravel自带的分页无法实现,可以用array_slice或者laravel集合的方...

  • Laravel中paginate+ajax分页加载

    分页是每个程序猿写了无数变得功能,Laravel中自带paginate进行分页非常简单又实用。但是paginate...

  • Laravel 限制条数后再分页

    laravel 自带开箱即用的分页,使用起来如丝般顺滑。默认情况下是对所有记录进行分页,现在我们有这样的需求:限制...

  • EF+Lambda 拼接Join+GroupBy+Select+

    Join:表连接GroupBy:分组Select:显示列OrderByDescending:排序PageBy:分页...

  • Laravel 自定义分页类

    Laravel --实战篇 (自定义分页类) 前言 : Laravel框架中有封装好的分页类paginate方法,...

  • Laravel groupBy用法

    Laravel使用查询构建器(Laravel Eloquent)进行分组的演示,有一个小坑吧。 其中groupBy...

  • Laravel 自定义分页类

    最近在做小程序博客内容的管理,因为使用了第三方的云数据库,所以在做列表分页的时候不能使用Laravel自带的分页类...

网友评论

      本文标题:laravel 自带分页与 groupBy共用

      本文链接:https://www.haomeiwen.com/subject/ivlmmxtx.html