自定义分页格式
1. 需求
为啥要自定义分页数据格式?
- laravel自带的分页信息对于api来说显得臃肿
- 在对接小程序的时候不需要那么多的信息
- 本着简化分页数据结构的目的来自定义分页格式
- 最重要:抛砖引玉,合理的利用容器,用起laravel更得心应手。
2. 目标
自定义的分页格式
{
"page": 1,
"list": [
{
// Result Object
}
],
"total": 11,
}
laravel自带的分页格式
{
"total": 50,
"per_page": 15,
"current_page": 1,
"last_page": 4,
"first_page_url": "http://laravel.app?page=1",
"last_page_url": "http://laravel.app?page=4",
"next_page_url": "http://laravel.app?page=2",
"prev_page_url": null,
"path": "http://laravel.app",
"from": 1,
"to": 15,
"data":[
{
// Result Object
},
{
// Result Object
}
]
}
3. 具体细节与代码
在bootstrap/app.php文件或者appProvider中加入以下代码
//重新绑定到容器分页类的实现者
$app->bind('Illuminate\Pagination\LengthAwarePaginator', function ($app, $options) {
return (new \App\Tool\Paginator($options['items'], $options['total'], $options['perPage'], $options['currentPage'], $options['options']));
});
实现\App\Tool\Paginator
<?php
namespace App\Tool;
use Illuminate\Pagination\LengthAwarePaginator;
class Paginator extends LengthAwarePaginator
{
public function toArray()
{
return [
'page' => $this->currentPage(),
'list' => $this->items->toArray(),
'total' => $this->total(),
];
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
优秀!
感谢,刚好遇到这问题
非常感谢 正好遇到这个问题 :kissing_heart:
学习
nice
留个脚印,做备注