Laravel api第2页及以上的分页问题



我正在尝试自定义laravel分页来解决这个问题:

{
"current_page": 2,
"data": {
"10": {},
"11": {},
}

我想要这样的结果:

{
"current_page": 1,
"data": [
{},
{},
}

当我使用整个集合时,它工作得很好,但如果使用(where)获取集合的一部分,这个问题就会出现在我身上。

下面的脚本代码已经在AppServiceProvider启动方法中使用:

Collection::macro('paginate', function($perPage, $total = null, $page = null, $pageName = 'page') {
$page = $page ?: LengthAwarePaginator::resolveCurrentPage($pageName);
return new LengthAwarePaginator(
$this->forPage($page, $perPage),
$total ?: $this->count(),
$perPage,
$page,
[
'path' => LengthAwarePaginator::resolveCurrentPath(),
'pageName' => $pageName,
]
);
});

我找到了我的问题的解决方案,通过替换以下代码:

Collection::macro('paginate', function($perPage, $total = null, $page = null, $pageName = 'page') {
$page = $page ?: LengthAwarePaginator::resolveCurrentPage($pageName);
return new LengthAwarePaginator(
$this->forPage($page, $perPage),
$total ?: $this->count(),
$perPage,
$page,
[
'path' => LengthAwarePaginator::resolveCurrentPath(),
'pageName' => $pageName,
]
);
});

和这个:

if (!Collection::hasMacro('paginate')) {
Collection::macro('paginate', function ($perPage = 15, $page = null, $options = []) {
$page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
return (new LengthAwarePaginator( $this->forPage($page, $perPage)->values()->all(), $this->count(), $perPage, $page, $options))->withPath('');
});
}

AppServiceProvider启动方法。

最新更新