关于:拾年之璐 公众号:知行研究院
20.1 数据分页的使用
1、首先获取需要查询展示的数据,并且指定每页显示多少条数据:
//可以使用构造器方式
$users = DB::table('users')->paginate(5);
//也可以使用模型的方式
$users = User::paginate(5);
2、然后将数据返回给前端视图:
return view('data', [
'list' => $users
]);
3、接下来,在前端写代码,进行展示:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>标题</title>
</head>
<body>
<table border="1">
<tr>
<th>ID</th>
<th>姓名</th>
<th>性别</th>
<th>邮箱</th>
</tr>
@foreach($list as $user)
<tr>
<th>{{$user->id}}</th>
<th>{{$user->username}}</th>
<th>{{$user->gender}}</th>
<th>{{$user->email}}</th>
</tr>
@endforeach
</table>
{{$list->links()}}
</body>
</html>
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=*
。
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() | 获取当前页页码 |
start,$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 无效) |
page) | 获取指定页的URL |
$results->getPageName() | 获取分页的查询字符串变量 |
name) | 设置分页的查询字符串变量 |
以上。