经常使用laravel框架,对框架分页使用方案的整理
目录
框架分页方案
分析方法
分析使用SQL可以使用:
//开启记录 SQL 请求
DB::enableQueryLog();
/*数据库表操作*/
//输出 SQL 请求(在执行sql的下方使用)
print_r(DB::getQueryLog());die;
使用paginate
应用场景
适用于后台或者前后端混合且数据量中等或对响应速度要求不高的开发场景,
分页框架封装好了直接调用框架方法即可。
示例
paginate 方法能够自动判定当前页面正确的数量限制和偏移数。默认情况下,当前页数由 HTTP 请求所带的 ?page 参数来决定。该值由 Laravel 自动检测,并自动插入由分页器生成的链接;唯一参数为每页想要显示的数量,如下每页显示2条:
$res = DB::table('user')->paginate(2);
返回结果
打印返回结果如下:
使用SQL
可以明显的看到分页执行了两条SQL语句:
前端实现
前端使用laravel blade模版引擎解析,使用laravel封装的分页方法直接渲染即可。
示例如下:
{{$paginate->appends($search)->links()}}
效果:
简单分页
如果只需要在分页视图中简单的显示 “下一页” 和 “上一页” 链接,可以选择使用 simplePaginate 方法来进行更高效的查找。
应用场景
不显示总页数和数据条数,可以应用于大数据场景
示例
与paginate方法使用相同,只有一个参数即每页显示条数。
$res = DB::table('user')->select('id', 'real_name')->simplePaginate(2);
返回结果
打印返回结果如下:
使用SQL
前端实现
前端使用laravel blade模版引擎解析,使用laravel封装的分页方法直接渲染即可。
{{$paginate->appends($search)->links()}}
效果:
Skip take
应用场景
适合前后端分离场景,后端查询数据后通过接口返回,前端自定义实现分页。
示例
基础示例
使用skip和take方法,参数为数字类型,分别为偏移量和每页数据条数。
$res = DB::table('user')
->select('id', 'real_name')
->skip(0)
->take(2)
->get()
->toArray();
大数据示例
在数据量较大情况下,可以利用主键索引加快查询速度。
比如第一页可以使用id>0的,之后上一页最大的主键id(适用于顺序列表)。
示例如下:
$res = DB::table('user')
->where('id', '>', 0)
->select('id', 'real_name')
->skip(0)
->take(2)
->get()
->toArray();
返回结果
打印返回结果,如下:
使用SQL
前端实现
前端可以通过后端返回数据总条数或者是否有下页,来显示分页是否有下一页。
移动端也可以通过直接请求下一页无数据,来判断显示。
总结
Larael框架分页方案整理,总共介绍了三种分页方式,覆盖后台框架和API接口分页应用场景。
如果觉得后台的样式不够美观,还可以修改laravel框架分页封装样式。