【问题标题】:How to make pagination after merge two collections?合并两个集合后如何进行分页?
【发布时间】:2017-08-01 21:19:33
【问题描述】:

我使用标准方法进行分页:

$ann = Ann::get()->orderBy('id', 'desc')->paginate($limit);

在我将$ann 与另一个集合合并后:

$ann = $ann->merge($ann_subscribed);
            $ann = $ann->all();

结果我得到$ann = $ann->all(); 没有分页

【问题讨论】:

标签: laravel laravel-5.4


【解决方案1】:

1- 将此添加到 \app\Providers\AppServiceProvider 中的引导功能

 /**
         * Paginate a standard Laravel Collection.
         *
         * @param int $perPage
         * @param int $total
         * @param int $page
         * @param string $pageName
         * @return array
         */
        Collection::macro('paginate', function($perPage, $total = null, $page = null, $pageName = 'page') {
            $page = $page ?: LengthAwarePaginator::resolveCurrentPage($pageName);
            return new LengthAwarePaginator(
                $this->forPage($page, $perPage),
                $total ?: $this->count(),
                $perPage,
                $page,
                [
                    'path' => LengthAwarePaginator::resolveCurrentPath(),
                    'pageName' => $pageName,
                ]
            );
        });

2-从此以后所有的收藏都可以这样分页

$ann = Ann::orderByRaw('id','DESC')->get();
$ann_merged = $ann->merge($ann_subscribed);
$ann_merged ->paginate(5);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 2015-08-11
    相关资源
    最近更新 更多