dvsouto / laravel-json-paginate
在 Laravel/Lumen 中创建 API 的 JSON 分页
1.0.7
2020-06-05 09:06 UTC
Requires
- php: ^7.0.0
- illuminate/support: ~5.8.0|^6.0|^7.0|^8.0|^9.0
This package is auto-updated.
Last update: 2024-09-20 07:31:47 UTC
README
在原始的 Laravel 应用程序中,查询构建器(https://laravel.net.cn/docs/7.x/pagination#paginating-eloquent-results)存在 paginate
方法,该方法返回格式化到前端分页的结果。
此包向 Eloquent 查询构建器添加了一个 jsonPaginate
方法,该方法监听以 JSON 格式返回的结果,以用于 API 和在其他应用程序中显示数据。
安装
您可以通过 composer 安装此包
composer require dvsouto/laravel-json-paginate
Laravel 5.5 及以上版本中,服务提供者将自动注册。在框架的较旧版本中,只需将服务提供者添加到 config/app.php
文件中
'providers' => [ ... Bitnary\JsonPaginate\JsonPaginateServiceProvider::class, // Bitnary JsonPaginate for o Eloquent ];
在 Lumen 中,您需要在 bootstrap/app.php
文件中加载服务提供者
... $app->register(Bitnary\JsonPaginate\JsonPaginateServiceProvider::class); // Bitnary JsonPaginate for o Eloquent
用法
要分页准备从 API 返回的结果,只需调用 jsonPaginate
方法。
YourModel::jsonPaginate();
当然,您仍然可以使用所有已知的构建器方法
YourModel::where('my_field', 'myValue')->jsonPaginate();
默认情况下,最大页面大小设置为 100。您可以通过传递值给 jsonPaginate
来更改此数字。您还可以传递到方法中的每个侧面参数以生成页面键。
$per_page = 10; // 10 Results per page $each_side = 3; // 3 buttons on each side YourModel::jsonPaginate($per_page, $each_side);
默认情况下,最大页面大小设置为 100。您可以通过传递值给 jsonPaginate
来更改此数字。
$maxResults = 10; YourModel::jsonPaginate($maxResults);
此返回包含以下参数的数组
{ "data": [ // (object) Results for this page { "id": 1, "name": "Davi Souto" }, { "id": 2, "name": "Lorem Ipsum" }, { "id": 3, "name": "Sit Amet" }, ... ], "paginator": { "current_page": 1, // (int) Current page number "prev_page": 1, // (int) Previous page number "next_page": 2, // (int) Next page number "first_page": 1, // (int) The first page (always 1), "is_first_page": true, // (boolean) Is in first page ? "last_page": 25, // (int) Last page number "is_last_page": false, // (boolean) Is in last page ? "page_keys": [ // (array) Contains the list of pages to display in front 1, 2, 3, 4, ], "from_item": 1, // (int) Results for this page starts from this item "to_item": 100, // (int) Results for this page ends in this item "total_items": 100, // (int) Total of existent itens "per_page": 10, // (int) Results for this page ends in this item "display_items": // (int) Total of itens in this page } }
安全
如果您发现任何与安全相关的问题,请通过电子邮件 davi.souto@gmail.com 联系我们,而不是使用问题跟踪器。
鸣谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。