Laravel 5.4 LengthAwarePaginator

Rbe*_*bex 8 laravel

我的大脑突然撞到了这个.任何关心帮助我的人都非常感激.

这是laravel 5.4中的LengthAwarepaginator

这是代码.

$collection = [];

            foreach ($maincategories->merchantCategory as $merchantCat) {

               foreach ($merchantCat->merchantSubcategory as $merchantSub) {

                   foreach($merchantSub->products as $products){

                        $collection[] = $products;
                   }
               }
            }

            $paginate = new LengthAwarePaginator($collection, count($collection), 10, 1, ['path'=>url('api/products')]);

            dd($paginate);
Run Code Online (Sandbox Code Playgroud)

它显示完美,但问题是项目是100.这是我的所有项目,我正确指定.我只需要显示10个.

基于LengthAwarePaginator构造函数.这是参考.

public function __construct($items, $total, $perPage, $currentPage = null, array $options = [])
Run Code Online (Sandbox Code Playgroud)

这是屏幕截图.

在此输入图像描述

我哪里做错了?TY

pat*_*cus 21

手动创建分页器时,您必须自己对结果集进行切片.分页器的第一个参数应该是所需的结果页面,而不是整个结果集.

分页文档:

手动创建paginator实例时,应手动"切片"传递给paginator的结果数组.如果您不确定如何执行此操作,请查看array_slice PHP函数.

我建议使用Collection来帮助解决这个问题:

// ...

$collection = collect($collection);

$page = 1;
$perPage = 10;

$paginate = new LengthAwarePaginator($collection->forPage($page, $perPage), $collection->count(), $perPage, $page, ['path'=>url('api/products')]);
Run Code Online (Sandbox Code Playgroud)