我的大脑突然在这个问题上崩溃了.非常感谢任何愿意帮助我的人.

这是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);

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

Base on LengthAwarePaginator constructor. Here is the reference.

public function __construct($items, $total, $perPage, $currentPage = null, array $options = [])

Here is the screen shot.

enter image description here

我哪里做错了?TY

推荐答案

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

From the pagination documentation:

手动创建分页器实例时,应手动"切片"传递给分页器的结果array.如果您不确定如何实现这一点,请查看array_slice PHP函数.

I would suggest using a Collection to help out with this a little:

// ...

$collection = collect($collection);

$page = 1;
$perPage = 10;

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

Laravel相关问答推荐

Laravel带S3存储器

使用MAATWebSite/EXCEL导入Exel时,不会创建Laravel模型

Inertiajs - 使用链接组件添加记录但无法在不使用表单的情况下清除文本区域

Laravel 5 如何配置 Queue 数据库驱动程序以连接到非默认数据库?

如何判断用户Electron邮件是否已存在

Eloquent的条件过滤器

如何在 Laravel 中使用内存数据库的完整测试套件之前迁移和 seeder ?

自定义 Laravel 关系?

Laravel 中间件返回(try 获取非对象的属性 headers)错误

Laravel 合集日期比较

Laravel 分页方法不适用于 map 集合?

Laravel 5 环境配置数组?

使用 Queue::fake() 测试监听器

Laravel 仓库

登录后 DevTools 无法解析 SourceMap 错误将重定向到该 js 文件

Laravel 单元测试依赖注入

Laravel 5 默认注册后如何发送邮件?

如何使用队列设置高、低和中优先级Electron邮件?

如何在脚本文件中使用 Laravel Blade?

Laravel 4 控制器模板/Blade - 正确的方法?