首页 > 解决方案 > Laravel:从 API 获取不一致的结果

问题描述

我有一个对项目进行分页的项目端点。我注意到每次到达终点时返回的项目似乎都不一致。我开始怀疑我使用的查询是否有问题,但似乎看不出问题所在:

$paginator = Items::whereNull('time_destroyed')
    ->orderBy('created_at', 'DESC')
    ->selectRaw('MAX(id) as id, MAX(created_at) as created_time, product_id')
    ->groupBy('product_id', 'created_at')
    ->paginate($default);

$data = $paginator->toArray();

$ids = $paginator->pluck('id')->toArray();

$posts = Items::whereIn('id', $ids)->get();
$posts->load('product.elbin', 'product.inventoryQuantity', 'product.inventory');

$data['data'] = $posts->toArray();

return response($data, 200)->withHeaders(cache_header('posts posts-page-'.$request->input('page'), 10));

标签: phplaravel

解决方案


https://laravel.com/docs/5.8/pagination

目前,Laravel 无法高效执行使用 groupBy 语句的分页操作。如果您需要使用带有分页结果集的 groupBy,建议您查询数据库并手动创建分页器。


推荐阅读