如何遍历laravel分页器中的每个页面

问题描述

我使用 Laravel 分页从表中检索数据,我能够获取第一页的项目,但如何遍历每个页面并从每个页面获取项目

这是我的代码

public function handle()
{
    $productsInstance = Products::query()->paginate(10);
    $totalPages = $productsInstance->lastPage();

    for ($i=1; $i <= $totalPages; $i++) {
        foreach ($productsInstance as $productInstance) {
            $items = $productInstance->items;

            foreach ($items as $item) {
                // operation performed on each item
            }
        }
    }
}

我正在查询分页的产品表有超过 200k 的记录,我可以在第一页上执行 foreach 操作但是如何从每个页面获取项目

解决方法

您应该安装 QueryFilter 包并在您的 模型

中使用该包引用
  1. 创建产品模型并使用 App\Filters\QueryFilter;

  2. 在产品模型中使用下面的函数

    /* 过滤器作用域 */

    公共函数 scopeFilter($query,QueryFilter $filters)

    {

    return $filters->apply($query);
    

    }

  3. 在控制器或作业中

    $limit = request()->limit ?? 10;

    $products = Product::filter($filter)->paginate($limit);

  4. 路线应该是获取产品-> /api/products?limit=10&page=1