[扩展推荐] Laravel Query Builder 让你的 API 支持动态参数,如 filter,include,sort

翻译 Summer ⋅ 于 3周前 ⋅ 最后回复由 sinofaneliu 2周前 ⋅ 393 阅读 ⋅ 原文地址

站点的翻译文章创建时,您将第一时间收到通知。

这是一篇社区协同翻译的文章,已完成翻译,更多信息请点击 协同翻译介绍

file

Laravel Query Builder 是由 Spatie 机构一员的 Alex Vanderbist 开发的扩展,用于从 API 请求中快速构建 Eloquent 查询。这个扩展使得 Laravel 构建复杂的 API 查询变得非常简单。虽然你或许已经听过这个扩展(或者已经使用过它),但我还是想确保每个人都知道它!

我强烈建议你使用 Query Builder 作为中转,并通过阅读 README 来了解它能做什么。它使得构建 API 过滤器和其他的相关查询任务变得非常容易,你会体验到像作弊一样的爽快。

Honvid 翻译于 3周前

你可以做一些基本的示例,包括过滤 API 请求,包括关联模型,将其与现有查询结合起来,对 API 请求进行排序等。

比如,使用这个请求 /users?filter[name]=John,下面是如何在 users 表中的 name 字段使用过滤:

use Spatie\QueryBuilder\QueryBuilder;

// ...

$users = QueryBuilder::for(User::class)
    ->allowedFilters('name')
    ->get();
// 所有姓名中包含字符串「John」的 `User` 集合

如果你有一个已经存在的查询,则可以将其传递给查询构造器:

$query = User::where('active', true);

$user = QueryBuilder::for($query)
    ->allowedIncludes('posts', 'permissions')
    ->where('score', '>', 42) // 可以连接 Laravel 中任何查询构造器的方法
    ->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
Honvid 翻译于 3周前

更多

你可以在 GitHub  spatie/laravel-query-builder 上获取源码,阅读有关安装和使用的文档。 本文的示例来自 Laravel Query Builder 的自述文件, 我建议你仔细阅读本篇文章以获取更多信息。

在 Laravel 5 中,你可以使用下面的 composer 命令来安装此包:

composer require spatie/laravel-query-builder
若相惜 翻译于 3周前

原文地址:https://laravel-news.com/laravel-query-b...

译文地址:https://laravel-china.org/topics/14810/e...


本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

本帖已被设为精华帖!
回复数量: 1
您需要登陆以后才能留下评论!

Composer 中国全量镜像

Top 250 扩展包

Lumen 中文文档

Laravel 速查表

Laravel 中文文档

Laravel 项目开发规范

Laravel 开发环境部署

Composer 中文文档

Elasticsearch-PHP 中文文档

Lumen 中文文档

GraphQL PHP 中文文档

社区文档撰写指南

TDD 构建 Laravel 论坛笔记

PHP PSR 标准规范

PHP 设计模式全集

Dingo API 中文文档