【问题标题】:How to loop over each page in laravel paginator如何循环遍历 laravel 分页器中的每个页面
【发布时间】:2021-09-08 09:47:21
【问题描述】:

我使用 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
            }
        }
    }
}

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

【问题讨论】:

  • 这是在显示结果的上下文中还是在后台?如果是后者,请改用Products::query()-&gt;chunk($chunk_size, $callback);

标签: php laravel foreach


【解决方案1】:

您应该安装 QueryFilter 包并在您的 Model

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

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

    /* 过滤器的范围 */

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

    {

    return $filters->apply($query);
    

    }

  3. 在控制器或作业中

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多