《laravel的分页查询;layui分页数据获取》
在Web开发中,当面对大量数据展示时,分页功能是不可或缺的。对于Laravel和Layui结合使用的场景,我们可以轻松实现分页查询以及分页数据获取。
解决方案
总体思路是:在Laravel后端对数据进行分页处理并返回分页后的数据给前端,在前端利用Layui框架来呈现分页效果并正确获取分页数据。
Laravel后端分页查询
使用paginate方法
这是最直接的方式。例如我们有一个用户表(users),想要对用户数据进行分页查询:
php
// 在控制器方法中
public function getUsers()
{
// 假设每页显示10条数据
$perPage = 10;
$users = User::orderBy('created_at', 'desc')->paginate($perPage);
// 将分页数据转换为数组格式返回
return response()->json([
'code' => 0,
'msg' => '',
'data' => $users->items(),
'count' => $users->total(),
'rel' => true
]);
}
这里的$users->items()
获取当前页的数据项,$users->total()
获取总数据量,这些信息对于前端分页组件很重要。
自定义分页逻辑
有时候我们需要更复杂的分页逻辑,比如根据特定条件过滤后再分页:
php
public function getFilteredUsers(Request $request)
{
$query = User::query();
if ($request->has('name')) {
$query->where('name', 'like', '%' . $request->input('name') . '%');
}
// 继续添加其他过滤条件
$perPage = 15;
$filteredUsers = $query->orderBy('id', 'asc')->paginate($perPage);
return response()->json([
'code' => 0,
'msg' => '',
'data' => $filteredUsers->items(),
'count' => $filteredUsers->total(),
'rel' => true
]);
}
Layui前端分页数据获取
在前端页面引入Layui相关资源后,可以通过以下方式使用分页组件并获取分页数据。
html
</p>
<title>Layui分页示例</title>
<table id="userTable"></table>
<div id="pageDemo"></div>
layui.use(['table', 'laypage'], function(){
var table = layui.table;
var laypage = layui.laypage;
// 渲染表格
table.render({
elem: '#userTable'
,url:'/getUsers' // 请求后端接口地址
,cols: [[
{field:'id', title:'ID'}
,{field:'name', title:'用户名'}
// 根据实际字段继续添加列
]]
,page: true // 开启分页
,limits:[10,15,20]
,limit:10 // 每页默认显示的数量
,done:function(res, curr, count){
// 分页渲染完毕后的回调
laypage.render({
elem: 'pageDemo' // 分页容器的id
,count: count // 数据总数
,curr: curr // 当前页
,limit: res.limit // 每页显示条数
,jump: function(obj, first){
if(!first){
// 刷新表格数据,重新请求对应页的数据
table.reload('userTable', {
page: {
curr: obj.curr
}
});
}
}
})
}
});
});
<p>
以上就是在Laravel和Layui中实现分页查询以及分页数据获取的方法,通过这两种思路可以满足大多数项目中的分页需求。