jasonstealer/laravel-query-builder

从API请求中轻松构建Eloquent查询


README

从API请求构建Eloquent查询

Latest Version on Packagist Test Status Code Style Status Total Downloads

此包允许您根据请求进行筛选、排序和包含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上创建一个问题,我们将尽快解决。

如果您发现了关于安全性的错误,请通过security@spatie.be发送邮件,而不是使用问题跟踪器。

升级

请参阅UPGRADING.md以获取详细信息。

测试

composer test

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全

如果您发现了关于安全性的错误,请通过security@spatie.be发送邮件,而不是使用问题跟踪器。

致谢

许可

MIT许可证(MIT)。请参阅许可文件以获取更多信息。