Laravel 管道查询集合

Laravel

Laravel 管道查询集合 包,包含一组用于管道的 Eloquent 查询过滤器。给定一个复杂的过滤器查询,在查询条件下,代码可能会变得有点笨拙:

$users = User::query()
    ->when($request->name ?? null, function($query, $name) {
        $query->where('name', 'like', "%$name%");
    })
    ->when($request->is_admin ?? null, function($query, $isAdmin) {
        $query->where('is_admin', $isAdmin ? 1 : 0);
    })
    ->when($request->created_at_from ?? null, function($query, $date) {
        $query->where('created_at', '>=', $date);
    })
    ->when($request->created_at_to ?? null, function($query, $date) {
        $query->where('created_at', '<=', $date);
    })
    ->get();

使用此软件包可以编写如下内容:

use Baro\PipelineQueryCollection;

// users?name=Baro&is_admin=1&created_at_from=2022-06-01&created_at_to=2022-06-31
$users = Users::query()->filter([
    new PipelineQueryCollection\RelativeFilter('name'),
    new PipelineQueryCollection\BooleanFilter('is_admin'),
    new PipelineQueryCollection\DateFromFilter('created_at'),
    new PipelineQueryCollection\DateToFilter('created_at'),
])
->get();

此软件包,包含以下过滤器:

  • Bitwise
  • Boolean
  • Date from
  • Date to
  • Exact
  • Relation
  • Relative
  • Scope
  • Sort

您可以在 Github l3aro/pipeline-query-collection 上开始使用此包。该包的作者还写了一篇更深入的文章—构建一个性感的查询过滤器—带您了解包背后的想法。

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

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

译文地址:https://learnku.com/laravel/t/68682

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 6

构建一个性感的查询过滤器 这篇文章能不能也翻译一下呢?谢谢

1年前 评论
laravel_peng 1年前
richardguo (作者) 1年前
laravel_peng 1年前
richardguo (作者) 1年前
laravel_peng

提交外文翻译:

file

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!