20.1 数据分页的使用

1、首先获取需要查询展示的数据,并且指定每页显示多少条数据:

  1. //可以使用构造器方式
  2. $users = DB::table('users')->paginate(5);
  3. //也可以使用模型的方式
  4. $users = User::paginate(5);

2、然后将数据返回给前端视图:

  1. return view('data', [
  2. 'list' => $users
  3. ]);

3、接下来,在前端写代码,进行展示:

  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>标题</title>
  6. </head>
  7. <body>
  8. <table border="1">
  9. <tr>
  10. <th>ID</th>
  11. <th>姓名</th>
  12. <th>性别</th>
  13. <th>邮箱</th>
  14. </tr>
  15. @foreach($list as $user)
  16. <tr>
  17. <th>{{$user->id}}</th>
  18. <th>{{$user->username}}</th>
  19. <th>{{$user->gender}}</th>
  20. <th>{{$user->email}}</th>
  21. </tr>
  22. @endforeach
  23. </table>
  24. {{$list->links()}}
  25. </body>
  26. </html>

20. 数据分页 - 图1

4、如上代码,分页按钮直接使用 links() 方法即可,它默认继承了Bootstrap 样式;

{{$list->links()}}

如果不想使用这个默认的分页样式,可以自定义,分页样式view的具体文件位置: vendor/laravel/framework/src/Illuminate/Pagination/resources/views/tailwind.blade.php

5、使用withPath()方法,更改路由地址;

可以在控制器端修改:

$users->withPath('/users/list');

可以在前端的分页按钮 修改:

{{$list->withPath('/users/list')->links()}}

也可以在路由中修改。

修改后,前端视图页面中的分页按钮的链接,就变成了 [http://127.0.0.1:8000/users/list?page=*](http://127.0.0.1:8000/users/list?page=*)

6、如果想带指定参数,可以使用 appends() 方法;

{{$list->appends(['sort'=>'id'])->links()}}

7、如果想保存所有的链接参数(比如查询参数),可以使用 withQueryString() 方法;

{{$list->withQueryString()->links()}}

8、使用 fragment() 方法给URL 地址添加锚点 # 符号;

{{$list->fragment('element')->links()}}

9、大量分页中…省略分页数量,使用 onEachSize() 方法可设置外侧数量,默认3;

{{$list->onEachSide(1)->links()}}

20.2 更多方法

如下:

方法 描述
$results->count() 获取当前页数据的数量
$results->currentPage() 获取当前页页码
20. 数据分页 - 图2start,$end) 创建分页URL 的范围
$results->hasPages() 是否有多页
$results->hasMorePages() 是否有更多页
$results->firstItem() 获取结果集中第一条数据的结果编号
$results->getOptions() 获取分页器选项
$results->items() 获取当前页的所有项
$results->lastItem() 获取结果集中最后一条数据的结果编号
$results->lastPage() 获取最后一页的页码(在simplePaginate 无效)
$results->nextPageUrl() 获取下一页的URL
$results->onFirstPage() 当前页是否为第一页
$results->perPage() 每页的数据条数
$results->previousPageUrl() 获取前一页的URL
$results->total() 数据总数(在simplePaginate 无效)
20. 数据分页 - 图3page) 获取指定页的URL
$results->getPageName() 获取分页的查询字符串变量
20. 数据分页 - 图4name) 设置分页的查询字符串变量

以上。