我正在尝试使用长度感知分页器对集合进行分页,如下所示:
new LengthAwarePaginator($cases->forPage($request->get('page'), $per_page), $cases->count(), $per_page, $request->get('page'));
就在此之前,我正按照;
排序集合$cases->sortBy('inactive_percentage', SORT_REGULAR, 'desc');
但是我从分页器得到的结果并不相同。我首先得到低的非活动百分比。如果我尝试使用per_page来说100比存在的记录多,那么结果就会正确排序。
如何使用paginator处理已排序的集合?
答案 0 :(得分:1)
我无法发表任何评论......大声笑试着让我的回复有点......
我与手动分页器的遭遇导致我不得不自己切片...根据文档:
手动创建paginator实例时,您应该手动创建 "切片"传递给paginator的结果数组。如果你是 不确定如何执行此操作,请查看array_slice PHP函数。
我的一个手动数组分页控制器函数的示例(分页器处理底层数组......)
public function comments(){
// DB::select returns an array, thus we have to build the paginator ourselves...
$comm = DB::select('select bla bla bla...
order by c.approved ASC, c.id DESC ');
// this basically gets the request's page variable... or defaults to 1
$page = Paginator::resolveCurrentPage('page') ?: 1;
// Assume 15 items per page... so start index to slice our array
$startIndex = ($page - 1) * 15;
// Length aware paginator needs a total count of items... to paginate properly
$total = count($comm);
// Eliminate the non relevant items...
$results = array_slice($comm, $startIndex, 15);
$comments = new LengthAwarePaginator($results, $total, 15, $page, [
'path' => Paginator::resolveCurrentPath(),
'pageName' => 'page',
]);
return view('backend/comments', compact('comments'));
}
希望这会有所帮助......