通过分页获取结果总数

Posted

技术标签:

【中文标题】通过分页获取结果总数【英文标题】:Get total number of results with pagination 【发布时间】:2015-04-12 12:41:06 【问题描述】:

我想获取列出所有用户的页面上的用户总数。这个页面应该是分页的。

到目前为止,这是我想出的:

控制器

$users = User::paginate(10);
return View::make('index', compact('users'));

查看:

 count($users) 

但这只给了我当前页面的用户数。如果可能的话,我想计算完整的结果集,而无需再次查询数据库。

【问题讨论】:

您不接受我的回答有什么原因吗?如果有什么不工作请告诉我,我可以帮助你:) 哦,抱歉,我一定是在未刷新的页面上再次单击了接受图标。效果很好! 【参考方案1】:

在 Laravel 4 中使用:

 $users->getTotal() 

Docs


在 Laravel 5 及以上版本中使用:

 $users->total() 

Docs

【讨论】:

【参考方案2】:

控制器

$products = ProductMaster::paginate(10); //1 page with 10 products

return view('index',compact('products'));

查看

  $products->total()    //show total products in your database

【讨论】:

【参考方案3】:

获取所有项目总计

$paginator->total() 确定数据存储中匹配项的总数。 (使用 simplePaginate 时不可用)。

获取当前页面总数

$paginator->count()获取当前页面的条目数。

示例

控制器

$users = User::paginate(10); //1 page with 10 products
return view('users', compact("users"));

查看:

 $users->total()  //show total users in your database

【讨论】:

当添加一个已被接受的五年前问题的答案时,重要的是要指出您的答案所针对的问题的新方面。【参考方案4】:

在 Laravel 8x 上,此数据也会在响应中返回。

https://laravel.com/docs/8.x/pagination#introduction

来自分页器的 JSON 将包含元信息,例如总页数、当前页数、最后页数等。结果记录可通过 JSON 数组中的数据键获得。以下是通过从路由返回分页器实例创建的 JSON 示例:


   "total": 50,
   "per_page": 15,
   "current_page": 1,
   "last_page": 4,
   "first_page_url": "http://laravel.app?page=1",
   "last_page_url": "http://laravel.app?page=4",
   "next_page_url": "http://laravel.app?page=2",
   "prev_page_url": null,
   "path": "http://laravel.app",
   "from": 1,
   "to": 15,
   "data":[
        
            // Record...
        ,
        
            // Record...
        
   ]

【讨论】:

【参考方案5】:

总结果 $results->total()

当前页面的第一项 $results->firstItem()

对于当前页面的最后一项 $results->lastItem()

对于当前页面 $results->currentPage()

【讨论】:

以上是关于通过分页获取结果总数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MongoDB 中对聚合查询结果进行分页并获得总文档数(Node.js + Mongoose)?

如何从分页的 ef 核心查询中获取可用的总行数

pagehelper怎么计算总数的

分页总数计算,根据总记录数获取分页总数_目标科技

SQL Server存储过程同时返回分页结果集和总数

MongoDB 获取总数,因为使用聚合的结果非常慢