【问题标题】:Paginate Laravel Collection分页 Laravel 集合
【发布时间】:2019-04-14 01:23:23
【问题描述】:

我有两个不同的查询,我合并以返回一个集合

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

我以这种方式返回它们:

$final = $combinados->all();

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

谢谢!

【问题讨论】:

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


【解决方案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);
    }

【讨论】:

    【解决方案2】:

    新版本中的 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);
    }
    ...
    

    【讨论】:

    • 刀片视图中如何控制分页?
    • @AlejandroParedes 分页由第一个参数控制,每页的项目数量由第二个参数控制。您可以将任何您想要的内容返回到刀片视图。通常分页由page url 参数控制。
    猜你喜欢
    • 1970-01-01
    • 2013-02-20
    • 2015-06-06
    • 2021-12-13
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    相关资源
    最近更新 更多