【问题标题】:Laravel Paginator getTotal returns null - Need total record count for all pagesLaravel Pagination get Total 返回 null - 需要所有页面的总记录数
【发布时间】:2015-09-20 14:03:55
【问题描述】:

我已经使用 laravel 实现了简单的分页。它工作正常。但是,我想添加记录总数并尝试使用 getTotal() 方法,但它返回 null 值。

$records = DB::table('tablename')
           ->where(condition)
           ....
           ....
           ->simplePaginate(10);

在视图中,添加链接工作正常。

 {{$records->links();}}

当我使用时,

{{$records->getTotal();}}

它返回空值。

如果我使用,

{{$records->count();}}

它返回给定页面的记录数。

请问有什么见解吗?

【问题讨论】:

    标签: laravel pagination


    【解决方案1】:

    simplePaginate 就是这样工作的。来自文档:

    如果您只在分页视图中显示“下一个”和“上一个”链接,您可以选择使用 simplePaginate 方法来执行更有效的查询。当您不需要在视图上显示确切的页码时,这对于较大的数据集很有用。

    简单的方法很简单,因为它不需要做额外的、低效的大表count查询来获得总数。

    【讨论】:

    • 谢谢。在这种情况下,最好的方法是什么。切换到分页或再次运行整个查询以获取计数。?该查询连接了近 10 个表和条件 where 子句(大约 20 个字段)以实现搜索功能。
    • @Chandra 这两种方法都重新运行查询,所以我会切换到分页以获得更简单的代码。
    【解决方案2】:

    该分页对象中有方法 total() 。只需调用该对象。您将获得总计数。

    例如:$records->total();

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,我所做的是

      $records = DB::table('tablename')
             ->where(condition)
             ....
             ....
             ->paginate(1);  //set as 1
      
      $total = $records->getTotal();  //get total
      

      然后像这样返回它(我使用 ajax 这就是为什么我将它作为数组返回):

      return Response::JSON(array(
          'pagination'     => (string) $records->links('pagination::simple'),
          'total_records'  => $total
      ));
      

      【讨论】:

        猜你喜欢
        • 2012-03-14
        • 1970-01-01
        • 1970-01-01
        • 2021-12-04
        • 2019-12-27
        • 1970-01-01
        • 1970-01-01
        • 2014-08-15
        • 2015-11-05
        相关资源
        最近更新 更多