dees040 / pagination
为您的 Eloquent 模型提供动态分页。
Requires
- php: ^7.0
- illuminate/support: ^5.0
Requires (Dev)
- orchestra/testbench: 3.5.*|3.6.*
- phpunit/phpunit: 6.0.*|7.0.*
This package is auto-updated.
Last update: 2024-08-25 21:33:45 UTC
README
为您的 Eloquent 模型提供动态分页。只需查询参数即可进行分页、排序和排序。
安装
使用 composer 安装此包。
composer require dees040/pagination
服务提供器将自动在 Laravel 5.5 或更高版本中注册。否则,请将以下提供器添加到您的 providers
数组中的 config/app.php
dees040\Pagination\ServiceProvider
此包附带一个小的配置文件。要发布配置文件,请运行以下命令
php artisan vendor:publish --provider="dees040\Pagination\ServiceProvider" --tag="config"
使用方法
当服务提供器注册时,此包将自动为 Eloquent 构建器添加宏(方法)。然后您可以使用 dynamicPagination()
方法。如果您愿意,可以在配置中更改方法名。
示例
<?php namespace App\Http\Controllers; use App\User; class UserController extends Controller { public function index() { $users = User::where('age', '>', 18) ->dynamicPagination(); return response()->json($users); } }
dynamicPagination()
方法与 Eloquent 构建器的 paginate()
方法具有相同的签名
dynamicPagination($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)`
所有这些参数都是可选的,如果某些参数未提供,则将尝试从查询(GET)参数中读取它们。
参数选项
page
页码参数是主要参数。如果查询(GET)参数中不存在 page
参数,则结果将不会分页。除非配置值 force_pagination
设置为 true
。页码参数表示需要分页的页面。
per_page
每页参数表示每页需要分页的项目数量。因此,如果值为 15,则分页器将返回 15 个结果。如果未找到该参数,则分页器将使用在模型中设置的默认值,该默认值可以在模型中覆盖。
order_by
如果您想在进行分页之前执行 order by
,则可以使用此参数。这对于使用 API 并在您的前端应用程序中的表中排序结果非常有用。分页器检查您是否可以使用给定的键进行排序。它会检查模型中是否存在 getOrderableKeys()
方法。此方法应返回一个可以排序的字段(字符串)数组。如果 getOrderableKeys()
不存在,它将使用 $fillable
项。始终添加 id
键。
sort_by
您希望以何种方式对结果进行排序?asc
或 desc
?使用此参数选项指定。这只能与 order_by
参数一起使用。
示例路由
如果使用所有参数的示例
https://example.com/posts?page=3&per_page=30&order_by=updated_at&sort_by=desc
这里您将获得第 3 页开始的 30 篇帖子。结果按 updated_at
字段降序排序。
待办事项
- 按关系排序
- 添加搜索选项
- 使用 scout
- 添加宏支持
- 对集合进行
- 对查询构建器进行
- 按多个字段排序