分页Laravel系列

时间:2018-11-10 20:47:44

标签: php laravel laravel-blade laravel-collection laravel-paginate

我合并了两个不同的查询以返回集合

$combinados = $histMe->merge($hist)->sortByDesc('created_at');

我以这种方式返回它们:

$final = $combinados->all();

但这会打印所有收藏集,我该如何对它进行分页? paginate() laravel方法不适用于集合。以及如何从视图中控制它?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用我很久以前写的这段代码:

您必须使用了解长度的分页器:

use Illuminate\Pagination\LengthAwarePaginator;


public function paginate($items, $perPage,$setDefaultOption = true, $options = [])
    {
        if($setDefaultOption){
            $options = ['path' => request()->url(), 'query' => request()->query()];
        }
        $page = Input::get('page', 1); // Get the current page or default to 1


        $items = $items instanceof Collection ? $items : Collection::make($items);

        return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options);
    }

答案 1 :(得分:1)

在较新的版本中,该api有所更改。要对集合进行分页,您现在需要使用forPage。

forPage方法具有两个参数:

forPage(int $page, int $perPage)

因此您可以在控制器中执行以下操作:

...
public function index(Request $request)
{
    $combinados = $histMe->merge($hist)->sortByDesc('created_at');

    $combinados->forPage($request->get('page'), 25);
}
...