spatie / laravel-query-builder
轻松从API请求构建Eloquent查询
Requires
- php: ^8.2
- illuminate/database: ^10.0|^11.0
- illuminate/http: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.11
Requires (Dev)
- ext-json: *
- mockery/mockery: ^1.4
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^7.0|^8.0
- pestphp/pest: ^2.0
- phpunit/phpunit: ^10.0
- spatie/invade: ^2.0
- dev-main
- 6.0.1
- 6.0.0
- v5.x-dev
- 5.8.1
- 5.8.0
- 5.7.0
- 5.6.0
- 5.5.0
- 5.4.0
- 5.3.0
- 5.2.0
- 5.1.2
- 5.1.1
- 5.1.0
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- v4.x-dev
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- v3.x-dev
- 3.6.3
- 3.6.2
- 3.6.1
- 3.6.0
- 3.5.0
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.4
- 3.3.3
- 3.3.2
- 3.3.1
- 3.3.0
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.0.0
- v2.x-dev
- 2.8.4
- 2.8.3
- 2.8.2
- 2.8.0
- 2.7.2
- 2.7.1
- 2.7.0
- 2.6.1
- 2.6.0
- 2.5.1
- 2.5.0
- 2.4.0
- 2.3.0
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.1
- 2.0.0
- v1.x-dev
- 1.18.0
- 1.17.5
- 1.17.4
- 1.17.3
- 1.17.2
- 1.17.1
- 1.17.0
- 1.16.1
- 1.16.0
- 1.15.2
- 1.15.1
- 1.15.0
- 1.14.0
- 1.13.2
- 1.13.1
- 1.13.0
- 1.12.0
- 1.11.2
- 1.11.1
- 1.11.0
- 1.10.4
- 1.10.3
- 1.10.1
- 1.10.0
- 1.9.6
- 1.9.5
- 1.9.4
- 1.9.3
- 1.9.2
- 1.9.1
- 1.9.0
- 1.8.0
- 1.7.0
- 1.6.0
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.0
- 1.3.0
- 1.2.1
- 1.2.0
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.1
- 1.0.0
- 0.0.3
- 0.0.2
- 0.0.1
- dev-phpstan
- dev-shift-53871
This package is auto-updated.
Last update: 2024-09-05 10:08:00 UTC
README
此包允许您根据请求进行过滤、排序和包含Eloquent关系。在此包中使用的QueryBuilder扩展了Laravel的默认Eloquent构建器。这意味着您仍然可以使用所有您喜欢的方法和宏。查询参数名称尽可能遵循JSON API规范。
基本用法
根据请求过滤查询:/users?filter[name]=John
use Spatie\QueryBuilder\QueryBuilder; $users = QueryBuilder::for(User::class) ->allowedFilters('name') ->get(); // all `User`s that contain the string "John" in their name
了解更多关于过滤功能,如:部分过滤、精确过滤、范围过滤、自定义过滤、忽略值、默认过滤值等。
根据请求包含关系:/users?include=posts
$users = QueryBuilder::for(User::class) ->allowedIncludes('posts') ->get(); // all `User`s with their `posts` loaded
了解更多关于包含功能,如:包含嵌套关系、包含关系计数、自定义包含等。
根据请求对查询进行排序:/users?sort=id
$users = QueryBuilder::for(User::class) ->allowedSorts('id') ->get(); // all `User`s sorted by ascending id
与现有查询配合良好
$query = User::where('active', true); $userQuery = QueryBuilder::for($query) // start from an existing Builder instance ->withTrashed() // use your existing scopes ->allowedIncludes('posts', 'permissions') ->where('score', '>', 42); // chain on any of Laravel's query builder methods
为查询选择字段:/users?fields[users]=id,email
$users = QueryBuilder::for(User::class) ->allowedFields(['id', 'email']) ->get(); // the fetched `User`s will only have their id & email set
支持我们
我们在创建最佳开源包方面投入了大量资源。您可以通过购买我们的付费产品之一来支持我们。
我们非常感谢您从家乡寄来明信片,提及您正在使用我们的哪个包。您可以在我们的联系页面上找到我们的地址。我们将发布所有收到的明信片在我们的虚拟明信片墙上。
安装
您可以通过composer安装此包
composer require spatie/laravel-query-builder
在文档网站上阅读安装说明:https://spatie.be/docs/laravel-query-builder/v5/installation-setup。
文档
您可以在https://spatie.be/docs/laravel-query-builder/v5上找到文档。
如果您在使用包时遇到困难?发现了错误?您对改进媒体库有任何一般性的问题或建议?请随时在GitHub上创建一个问题,我们将尽快解决。
如果您发现了一个关于安全性的错误,请通过[email protected]发送邮件,而不是使用问题跟踪器。
升级
有关详细信息,请参阅UPGRADING.md。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
贡献
有关详细信息,请参阅CONTRIBUTING。
安全
如果您发现了一个关于安全性的错误,请通过[email protected]发送邮件,而不是使用问题跟踪器。
鸣谢
许可协议
麻省理工学院许可证(MIT)。有关更多信息,请参阅许可证文件。