Laravel集合forPage删除了排序?

时间:2017-02-15 10:58:43

标签: php laravel pagination

我正在尝试使用长度感知分页器对集合进行分页,如下所示:

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处理已排序的集合?

1 个答案:

答案 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'));
    }

希望这会有所帮助......