从接口获取的数据 合并 数据库数据后的数组 如何分页显示
3 回答
达令说
TA贡献1821条经验 获得超6个赞
手动创建分页器
有时候你可能想要通过传递数组数据来手动创建分页实例,
你可以基于自己的需求通过创建 Illuminate\Pagination\Paginator
或 Illuminate\Pagination\LengthAwarePaginator 实例来实现。
Paginator 类不需要知道结果集中数据项的总数;
不过,正因如此,该类也没有提供获取最后一页索引的方法。
LengthAwarePaginator 接收参数和 Paginator 几乎一样,只是,它要求传入结果集的总数。
换句话说,Paginator 对应 simplePaginate 方法,
而LengthAwarePaginator 对应 paginate 方法。
注:当手动创建分页器实例的时候,应该手动对传递到分页器的结果集进行“切片”,
如果你不确定怎么做,查看 PHP 函数 array_slice。
---上面来自 laravel 学院手册
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Pagination\Paginator;
use Illuminate\Http\Request;
# 仅做演示 #
function userList(Request $request) {
$users = [
['username'=>'zhangsan', 'age'=>26],
['username'=>'lisi', 'age'=>23],
['username'=>'wangwu', 'age'=>62],
['username'=>'zhaoliu', 'age'=>46],
['username'=>'wangmazi', 'age'=>25],
['username'=>'lanzi', 'age'=>24],
['username'=>'pangzi', 'age'=>21]
];
$perPage = 3;
if ($request->has('page')) {
$current_page = $request->input('page');
$current_page = $current_page <= 0 ? 1 :$current_page;
} else {
$current_page = 1;
}
$item = array_slice($users, ($current_page-1)*$perPage, $perPage); //注释1
$total = count($users);
$paginator =new LengthAwarePaginator($item, $total, $perPage, $currentPage, [
'path' => Paginator::resolveCurrentPath(), //注释2
'pageName' => 'page',
]);
$userlist = $paginator->toArray()['data'];
return view('userlist', compact('userlist', 'paginator'));
}
---来自百度
- 3 回答
- 0 关注
- 696 浏览
添加回答
举报
0/150
提交
取消