laravel model默认的paginate 方法返回JSON数据时,实际使用的是类Illuminate\Pagination\LengthAwarePaginator中的toArray方法,格式比较丑。
本文提供一种简单的修改方式。
不多说上代码:
namespace App\Providers;
use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;
use Illuminate\Pagination\LengthAwarePaginator;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//分页返回格式修改
$this->app->bind('Illuminate\Pagination\LengthAwarePaginator', function ($app, $options) {
return new class($options['items'], $options['total'], $options['perPage'], $options['currentPage'], $options['options']) extends LengthAwarePaginator {
public function toArray(): array
{
return [
'rows' => $this->items->toArray(),
'total' => $this->total()
];
}
};
});
}
}
这里使用的是直接在laravel/lumen启动时替换Illuminate\Pagination\LengthAwarePaginator的实现类,使得分页返回新的json数据格式。
lumen下别忘记注册AppServiceProvider
$app->register(App\Providers\AppServiceProvider::class);