问题描述
我使用 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 包并在您的 模型
中使用该包引用-
创建产品模型并使用 App\Filters\QueryFilter;
-
在产品模型中使用下面的函数
/* 过滤器作用域 */
公共函数 scopeFilter($query,QueryFilter $filters)
{
return $filters->apply($query);
}
-
在控制器或作业中
$limit = request()->limit ?? 10;
$products = Product::filter($filter)->paginate($limit);
-
路线应该是获取产品-> /api/products?limit=10&page=1