Laravel 查询构建器
发布日期 作者 Paul Redmond
Laravel 查询构建器是 Alex Vanderbist 和 Spatie 团队开发的一个包,用于快速从 API 请求构建 Eloquent 查询。这个包使创建复杂的 Laravel API 查询变得非常简单。虽然您可能已经听说过这个包(或者使用过它),但我希望确保每个人都了解它!
我强烈建议您试用 Query Builder 并阅读 README 文件,了解它的功能。它使创建 API 过滤器和其他与查询相关的任务变得如此容易,您可能会觉得自己在作弊。
您可以执行的一些基本示例包括:过滤 API 请求,包含相关模型,将其与现有查询结合使用,对 API 请求进行排序。
例如,使用请求 /users?filter[name]=John
,您可以像这样在 users
表的 name
字段上使用过滤功能
use Spatie\QueryBuilder\QueryBuilder; // ... $users = QueryBuilder::for(User::class) ->allowedFilters('name') ->get();// all `User`s that contain the string "John" in their name
如果您有现有查询,可以将其传递给查询构建器
$query = User::where('active', true); $user = QueryBuilder::for($query) ->allowedIncludes('posts', 'permissions') ->where('score', '>', 42) // chain on any of Laravel's query builder methods ->first();
一个更高级的示例,也是我个人最喜欢的功能之一,就是范围过滤器。假设您有以下范围
public function scopeStartsBefore(Builder $query, $date): Builder{ return $query->where('starts_at', '>=', Carbon::parse($date));}
关联的查询构建器可能看起来像这样
QueryBuilder::for(Event::class) ->allowedFilters([ Filter::scope('starts_before'), ]) ->get();
使用上面的查询构建器,现在可以像这样执行以下查询来根据 starts_before
列过滤结果
GET /events?filter[starts_before]=2018-01-01
了解更多
您可以在 GitHub 上查看源代码并阅读有关如何安装和使用此包的文档,地址为 spatie/laravel-query-builder。本文中的示例来自 Laravel Query Builder README 文件,我建议您阅读整个文件以获取更多详细信息。
您可以在 Laravel 5 项目中使用以下 Composer 命令安装此包
composer require spatie/laravel-query-builder