php - 如何在 laravel 上填充 META 和 LINKS 分页?
问题描述
我需要帮助才能在 laravel eloquent 上填充这种分页。
{
"meta": {
"count": 10,
"total": 100
},
"links": {
"first": "http://localhost/page[limit]=10&page[offset]=0",
"last": "http://localhost/page[limit]=10&page[offset]=10",
"next": "http://localhost/page[limit]=10&page[offset]=10",
"prev": "null"
},
"data": [
{
"type": "checklists",
"id": "1"
}
]
}
我在 Laravel Eloquent 上试过这段代码。
$data = Model::select('type','id')->paginate(10);
return response()->json(
[
'data' => $data
],200
);
但它显示不同的格式,填充的数据没有 META 和 LINKS 模式。
{
"data": {
"current_page": 1,
"data": [
{
"type": "Mechanical Equipment Sales Representative",
"id": 1
}
],
"first_page_url": "http://localhost?page=1",
"from": 1,
"last_page": 4,
"last_page_url": "http://localhost?page=4",
"next_page_url": "http://localhost?page=2",
"path": "http://localhost",
"per_page": 10,
"prev_page_url": null,
"to": 10,
"total": 39
}
}
怎么做?请帮忙?
解决方案
您可以使用 API 资源:https ://laravel.com/docs/eloquent-resources#pagination
创建集合资源:
php artisan make:resource ModelCollection
在您的控制器中使用它:
$data = Model::select('type','id')->paginate(10);
return new ModelCollection($data);
对于 Lumen,创建一个app/Http/Resources/ModelCollection.php
文件:
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\ResourceCollection;
class ModelCollection extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return parent::toArray($request);
}
}
推荐阅读
- python - 如何将我的所有代码置于无限循环中?
- python - 如何修复混乱的 CSV 复制
- python - 无法使用剥离或替换删除前导 \n
- asp.net - 如何从动态 RadioButtonList 中获取文本?
- hibernate - 使用鉴别器值查询数据库
- python - 使用海龟重影
- php - OPCache 处理多个 apache
- sql-server - 在 SSRS 矩阵报告中添加 2 个计算字段时出现问题
- configuration - 在 ack 中,我可以定义一个受扩展名和第一行限制的类型(两个过滤器类型)吗?
- java - 使用 postgresql NOT IN 语句