现在就值得尝试的 5 个 Laravel 新包

简介: 本文精选5个近期发布的Laravel新包:Discount(优雅处理优惠券与折扣)、Truss(实时交互式数据库ER图)、Saga Lara Flow(基于Saga模式的长流程管理)、Head(统一管理SEO元标签)和Doctor(一键应用健康诊断)。它们直击开发痛点,提升效率与可维护性。(239字)

现在就值得尝试的 5 个 Laravel 新包

设想这样一个场景:晚上 11 点,开发者还在调试一个 Laravel 应用,手中唯一的线索却只是一条毫无信息量的通用错误消息。又或者,正在为客户的在线商店开发折扣功能,最终写出层层嵌套的 if-else 语句,复杂到三个月后自己重新阅读时都会感到困惑。

这类情况并不罕见。幸运的是,Laravel 社区从未停止构建能够让开发工作更加轻松的软件包。仅在过去几周内,就出现了五个值得关注的新包——既有 Laravel 核心团队直接发布的官方包,也有以优雅方式解决特定问题的社区包。

下面将逐一介绍这些软件包,并给出安装步骤和使用示例。

1. Laravel Discount 轻松实现优惠券与折扣

如果曾经从零构建过折扣系统,就会熟悉它通常如何逐步失控。最初只是简单的九折优惠,接着突然出现“最高优惠 50 美元”的需求,然后是“仅限 VIP 会员”,再然后是“确保不能与其他促销叠加”。用不了多久,折扣逻辑就会散落在十几个控制器中,几乎无法维护。

由 Milwad Khosravi 开发的 Laravel Discount 通过把这些逻辑全部存储在 Eloquent 模型中,并通过单一 Facade 进行计算,解决了这个问题。

GitHub - binafy/laravel-discount: Laravel Discount 是一个 Laravel 软件包,旨在帮助应用轻松处理折扣。

主要特性

  • 支持百分比和固定金额两种折扣类型,并可选设定最高折扣金额。
  • 支持优惠券代码,也支持无需代码即可自动应用的折扣。
  • 通过 starts_at 和 expires_at 设置有效时间范围。
  • 支持总使用次数和单个客户使用次数限制,并可通过 Session ID 支持访客。
  • 支持折扣叠加规则,可以允许多个折扣组合,也可以禁止叠加。
  • 可直接与 Laravel Cart 集成。

安装

composer require binafy/laravel-discount
php artisan migrate

第一个基础示例展示如何创建并应用百分比折扣:

use Binafy\LaravelDiscount\Enums\DiscountType;
use Binafy\LaravelDiscount\Models\Discount;
use Binafy\LaravelDiscount\Facades\LaravelDiscount;

$discount = Discount::query()->create([
    'name' => 'Summer Sale',
    'type' => DiscountType::Percentage,
    'value' => 20,
    'max_discount_amount' => 100,
]);

$result = LaravelDiscount::apply($discount, 300);
$result->discountAmount;  // 60.0
$result->payableAmount(); // 240.0

第二个示例展示如何应用带使用次数限制的优惠券代码:

$result = LaravelDiscount::applyCode('WELCOME10', 200, $user);

// 订单确认且支付成功后,正式记录本次使用
LaravelDiscount::redeem($discount, $user, $result->discountAmount);

其中值得关注的是,redeem() 会在数据库事务中执行。因此,如果两名客户恰好同时争抢最后一个优惠券名额,最终只有一人能够成功,无需开发者自行编写锁定逻辑。

如果需要把更加复杂的折扣条件表示为可组合的 PHP 对象,Discountify 采用了这种方式,同样值得对比了解。

2. Laravel Truss 实时交互式数据库 ER 图

接手遗留项目时,面对包含数十张表、关系指向四面八方的数据库 Schema,很容易立即陷入迷茫。常见解决方式是打开外部数据库 GUI 客户端,或者请人使用白板工具重新绘制关系图。然而,只要运行一次新的迁移,这张图通常就会立即过时。

由 Alberto Arena 开发的 Laravel Truss 可以直接在浏览器中把数据库结构渲染成支持缩放和交互的 ER 图。该软件包只读取结构信息,包括表、字段、键和索引,绝不会访问实际的行数据。

Laravel Truss:实时数据库结构查看器。 它可以直接在 Laravel 应用中,以支持滚动和缩放的 ER 图展示数据库 Schema。

突出特性

  • 提供可平移和缩放的实时 ER 图。
  • 聚焦模式:隔离显示某张表及其关联表。
  • Schema 差异比较:查看自上次迁移以来发生了哪些变化。
  • Schema Doctor:标记缺少主键、外键未建立索引和重复索引等问题。
  • 支持多个数据库连接。
  • 可导出为 PNG、SVG、DBML、JSON、CSV、Mermaid 或 Markdown。

安装

建议将它作为开发依赖安装,因为默认情况下,相关路由只会在本地环境中启用:

composer require albertoarena/laravel-truss --dev

安装完成后,在浏览器中访问 /truss,即可查看数据库 Schema 画布。

第一个示例通过 CLI 检查 Schema 变化:

php artisan truss:diff

第二个示例运行 Schema 健康检查,非常适合加入 CI 流水线:

php artisan truss:doctor

第三个示例把 Schema 导出为 DBML 格式,用作团队文档:

php artisan truss:export --format=dbml --output=docs/schema.dbml

这项功能尤其值得关注:导出结果具有确定性。相同的 Schema 始终会生成完全相同的文件,因此可以在 CI 流水线中加入 --check 标志,确保 Schema 文档始终与最新迁移保持同步。

3. Saga Lara Flow 轻松管理长时间运行的工作流

这可能是本文五个软件包中最具突破性的一个。可以设想一项长时间运行的业务流程:先从信用卡扣款,再预留库存,最后安排发货。如果其中任何一步在中途失败,就必须手动回滚此前完成的步骤。这类代码通常会演变为混乱的任务链,或者难以阅读的状态机。

由 Andriy Karpishyn 开发的 Saga Lara Flow 允许开发者把整个长时间运行的流程编写成一个普通 PHP 方法,并运行在日常已经使用的 Laravel 队列之上。

Saga Lara Flow 简介: Saga Lara Flow 是一个构建于 Laravel 队列之上的工作流管理引擎,并集成了 Saga 模式。

突出特性

  • 工作流以普通 handle() 方法编写,无需建立任务链。
  • 补偿操作:为每个步骤注册一个“撤销”动作;如果后续步骤失败,系统会按照相反顺序自动回滚。
  • 信号:工作流可以暂停并等待外部输入,例如人工审批。
  • 并行区块:同时运行多个操作。
  • 子工作流:一个工作流可以在内部调用另一个工作流。

安装

composer require discovery-ukraine/saga-lara-flow
php artisan migrate
php artisan vendor:publish --tag="saga-lara-flow-config"

第一个基础示例是账户配置工作流:

use DiscoveryUkraine\SagaLaraFlow\Workflow;

class ProvisionAccountWorkflow extends Workflow
{
   
    public function handle(string $email): array
    {
   
        $tenantId = $this->action(CreateTenant::class, $email)->run();
        $this->action(SendWelcomeEmail::class, $email)->run();
        return ['tenant' => $tenantId];
    }
}

第二个示例展示当某个步骤中途失败时,如何自动回滚事务:

public function handle(string $orderId): void
{
   
    $this->action(ChargeCard::class, $orderId)
        ->compensateWith(RefundCard::class, $orderId)
        ->run();

    $this->action(ReserveStock::class, $orderId)
        ->compensateWith(ReleaseStock::class, $orderId)
        ->run();

    // 如果这一行抛出异常,会先运行 ReleaseStock,再运行 RefundCard。
    $this->action(ShipOrder::class, $orderId)->run();
}

其底层设计十分巧妙:每个已经完成的步骤都会记录到数据库中。如果工作流重新运行,例如 Worker 重启之后,handle() 会从头再次执行,但任何此前已经成功的步骤都会跳过重复执行,系统会直接返回其已记录的结果。

该软件包要求 PHP 8.5 和 Laravel 13,因此在尝试之前,需要确保运行环境已经满足要求。

4. Laravel Head 轻松管理 Meta 标签

这是 Taylor Otwell 在 Laracon US 2026 主题演讲中亲自宣布的首批官方软件包之一。Laravel Head 解决了一个经典问题:管理标题、Meta Description、Canonical URL、Open Graph 标签和 JSON-LD。以往这些内容通常散落在数十个视图中,或者需要逐项手动处理。

GitHub - laravel/head: 用于 Laravel 应用的 Head 与元数据管理工具。

软件包提供的能力

  • 五层元数据优先级,从页面默认值到运行时元数据,每一层都会逐字段合并。
  • 通过 withHead() 方法设置路由级元数据。
  • 根据相同的标题和描述自动派生 Open Graph 和 X(Twitter)卡片。
  • 为文章、产品、面包屑导航和 FAQ 等 Schema 提供 JSON-LD 构建器。
  • 兼容 Blade、Livewire 和 Inertia。

安装

composer require laravel/head

第一个示例在服务提供者中设置全站默认值:

use Laravel\Head\Facades\Head;
use Laravel\Head\HeadBuilder;
use Laravel\Head\Enums\OgType;

Head::defaults(function (HeadBuilder $head) {
   
    $head
        ->title('Developer Awam', suffix: ' - Developer Awam')
        ->description('Learn Laravel in a way that actually makes sense.')
        ->canonical()
        ->og(siteName: 'Developer Awam', type: OgType::Website)
        ->searchableByRobots();
});

第二个示例为每个页面动态设置元数据,例如文章详情页:

public function show(Post $post)
{
   
    Head::title($post->title)
        ->description($post->description)
        ->when($post->isDraft(), fn ($head) => $head->hiddenFromRobots());

    return view('posts.show', ['post' => $post]);
}

第三个示例把元数据直接绑定到路由,非常适合静态页面:

Route::view('/about', 'about')
    ->name('about')
    ->withHead(
        title: 'About Us',
        description: 'Get to know the team behind the scenes.',
    );

只需在 Blade 布局中加入 @head,所有已配置的内容就会自动渲染到 <head> 标签内。对于 Inertia 应用,serverHead 支持可以让元数据直接出现在初始 HTML 中,因此搜索引擎爬虫和链接预览机器人无须先运行 JavaScript 便可读取这些内容。

5. Laravel Doctor 为应用执行健康检查

最后一个官方软件包同样发布于 Laracon US 2026,它可能是本文中最适合日常使用的工具。Laravel Doctor 实际上把开发者调试时需要逐项确认的检查清单——APP_KEY 是否已设置、Storage 是否可写、队列连接是否正确配置——整合成一条可以随时运行的命令。

GitHub - laravel/doctor: Laravel 应用诊断工具。

检查内容

  • 环境:.env 是否存在、APP_KEY、PHP 版本和必需扩展。
  • Composer:依赖是否已经安装、自动加载文件是否经过优化。
  • 配置:配置能否正确加载和缓存。
  • 数据库:连接是否可达、是否存在待执行的迁移。
  • 缓存、队列、调度器和 Session:已配置的驱动是否可达。
  • Storage:磁盘是否可写、storage:link 符号链接是否存在。
  • 安全:Debug 模式是否与环境匹配、.env 是否已被 Git 忽略。

安装

composer require laravel/doctor --dev

第一个示例运行标准检查:

php artisan doctor

第二个示例让 Doctor 自动修复可以安全处理的问题:

php artisan doctor --fix

第三个示例把检查限制在特定分类中,例如安全检查:

php artisan doctor --only=security

另一个值得关注的功能是,该软件包还为 AI 编码智能体提供了专用输出格式,例如 Claude Code 或 Cursor。因此,如果开发过程中使用了智能体,它可以在认为任务完成之前自动运行 artisan doctor,执行最终的合理性检查。第三方软件包也可以通过 Doctor Facade 注册自己的诊断项目,使 Laravel Doctor 不再只是静态工具,而是一个能够持续扩展的诊断平台。

总结与选择建议

如果暂时不确定应该首先尝试哪个软件包,可以参考以下简单建议:

  • 正在开发电商功能或需要优惠券系统——尝试 Laravel Discount。
  • 刚刚接手一个数据库结构混乱的项目——Laravel Truss 会非常实用。
  • 存在容易在中途失败的长时间业务流程——Saga Lara Flow 值得探索。
  • 厌倦了手动管理 SEO 标签——Laravel Head 可以简化这项工作。
  • 希望立即了解应用健康状况——运行 Laravel Doctor。

这五个软件包共同证明了一点:Laravel 生态系统从未停止前进。无论是社区开发的工具,还是核心团队发布的官方软件包,它们都源自开发者每天面对的真实问题。可以在下一个项目中尝试其中一个,亲自看看它能够节省多少时间。

原文连接

目录
相关文章
|
1月前
|
人工智能 安全 API
阿里云Token Plan 个人版Quick Start:最低39 元/月,主流AI工具直接接入,Credits 统一计量
阿里云百炼 Token Plan 个人版是面向个人开发者的 AI 大模型订阅服务,采用 Credits 统一计量,支持在 Claude Code、Cursor、Qwen Code 等主流 AI 编程和智能体工具中使用。目前提供 Lite、Standard、Pro 三档套餐及用量包,限时价格分别为 39 元/月、139 元/月、499 元/月。
阿里云Token Plan 个人版Quick Start:最低39 元/月,主流AI工具直接接入,Credits 统一计量
|
1月前
|
弹性计算 人工智能 API
DeepSeek Harness:阿里云百炼支持按量计费、Coding Plan、Token Plan方式配置接入
阿里云百炼支持DeepSeek Harness接入,提供按量计费、Coding Plan及Token Plan(个人/团队版)四种灵活配置方式,兼容OpenAI协议,开箱即用。在阿里云百炼官网:https://t.aliyun.com/U/fPVHqY 免费领取千万Tokens
|
26天前
|
安全 JavaScript API
PHP 8.6 只是个小版本,三十项弃用却已在为 PHP 9.0 铺路
PHP 8.6 虽为小版本,却以30项精准弃用、部分函数应用(PFA)和全新`Time\Duration`类为核心,悄然为PHP 9.0铺路。PFA赋能管道运算符,`Duration`统一超时语义,弃用清单直指语言演进方向——安全加固、类型严谨、异步就绪。(239字)
160 5
|
1月前
|
机器学习/深度学习 人工智能 缓存
阿里云百炼产品月报【2026年8月】
阿里云百炼本月重磅升级:Token Plan个人版取消5小时调用限制,新增Qwen3.8-Max/Flash、DeepSeek-V4-Pro等多款大模型;发布Wan3.0-Video全模态视频生成模型;应用广场上新15个行业模板,MCP广场新增42个数据服务;限时组合购68元起,多项后付费享折扣。
571 1
|
1月前
|
人工智能 IDE 开发工具
全新 Qoder 线上发布会,今晚 19:00 不见不散!
9月1日19:00,Qoder线上发布会直播!聚焦全新 Qoder,产品、研发、设计三位成员深度解读,助你厘清 Qoder IDE与新 Qoder 的适用场景。锁定视频号「Qoder.ai」
240 1
|
1月前
|
人工智能 IDE 开发工具
Pi 突然火了:极简 Coding Agent 到底强在哪里?
本文导读 大多数 Coding Agent 都在继续增加模型、工具和连接器,Pi 却把默认能力压到很小,再由用户按需扩展。本文不按 Star 数下结论,而是分析这种极简设计换来了什么、付出了什么,以及它适合哪类使用者。 AI 编程工具正在走一条很熟悉的路。 模型要更多,工具要更多,MCP 要更多,A
Pi 突然火了:极简 Coding Agent 到底强在哪里?
|
1月前
|
弹性计算 Java Linux
阿里云服务器推荐:99元经济型e实例,199元u1企业专享,u2i/c9i配置直降
本文介绍了2026年阿里云云服务器活动调价后的全新产品矩阵,梳理了全档位值得入手的高性价比实例。入门级档位保留38元/年的2核2G轻量应用服务器,自带主流建站镜像,日均成本仅0.1元,适配个人博客与普通企业官网搭建。高性价比档位覆盖99元/年的经济型e实例、199元/年的u1实例,以及支持多带宽灵活选择的u2i实例,满足个人开发者与中小微企业的日常业务需求。面向中大型门户、电商平台等高性能场景,文章还整理了第九代c9i、g9i、r9i系列实例的多带宽活动价目表,结合各实例的算力特性与适用场景给出选型参考,帮助不同规模的用户在调价后精准匹配适配自身业务的高性价比算力方案。
|
7月前
|
编译器 Go PHP
FrankenPHP 原生支持 Windows 了
FrankenPHP 正式原生支持 Windows!基于 Go 1.26 对 MSVC Clang 的 CGO 支持,成功打通与官方 PHP(MSVC 编译)的链接难题,实现 100% 特性兼容——含 Worker Mode、Hot Reloading 及全部扩展。性能较 Nginx/PHP-FPM 提升超 260%,开箱即用。(239字)
570 157
|
6月前
|
人工智能 安全 数据可视化
GPT-5.5 开启更强的智能体工作方式
OpenAI发布GPT-5.5:迄今最强智能体模型,兼具更高智能与GPT-5.4级响应速度。擅长代码编写调试、多工具协同、数据分析与文档生成,在编码、科研、知识工作等长程任务中表现卓越,支持复杂意图理解与自主推进,现已面向Plus/Pro/企业用户开放。(239字)
681 4
GPT-5.5 开启更强的智能体工作方式
|
6月前
|
人工智能 JavaScript PHP
Laravel + Vue 免费可商用 PHP 管理后台 CatchAdmin V5.3.0 发布:支持 AI Agent 开发
CatchAdmin V5.3.0 是基于 Laravel 13 + Vue3 的免费可商用后台框架,支持企业级权限、动态路由、代码生成等;本次重磅升级AI开发体验,内置AGENTS指引、9大AI Skills、多平台兼容及Context7实时文档,大幅提升后台开发效率。(239字)
566 1
Laravel + Vue 免费可商用 PHP 管理后台 CatchAdmin V5.3.0 发布:支持 AI Agent 开发