2026 年 6 月,Laravel Cloud 开始支持 Symfony 应用,Forge 新增了托管 Valkey 缓存和对象存储。框架层面也带来了批量作业派发、Postgres 连接池支持、MCP 客户端/服务器等丰富的更新。
参考出处:Laravel June Product Updates
Laravel Framework
Bus::bulk() — 批量作业派发
大量作业现在可以通过一次数据库 INSERT 完成登记。按每个队列/连接分别执行批量 INSERT,省去了逐条 INSERT 的开销。
use Illuminate\Support\Facades\Bus;
Bus::bulk([
new ProcessOrder($order1),
new ProcessOrder($order2),
new ProcessOrder($order3),
// 数千条也很高效
]);
Postgres 事务池支持
框架层面支持了 PgBouncer、AWS RDS Proxy、Neon 等事务模式的 Postgres 连接池。
// config/database.php
'pgsql' => [
'driver' => 'pgsql',
'pooled' => true, // 声明经过连接池的连接
// ...
],
对于需要直连的场景(如模式操作或 DDL 语句),可以在连接名后加 ::direct 来绕过连接池。
DB::connection('pgsql::direct')->statement('CREATE INDEX ...')
框架会自动处理 emulated prepares、boolean binding 以及连接池所需的其他所有处理。
MCP 客户端 / 服务器工具支持
Laravel AI 智能体现在可以使用远程 MCP 服务器(通过 HTTP)以及本地 MCP 服务器类的工具。Schema 转换、封装、调用都会自动处理。
class MyAgent extends Agent
{
public function tools(): array
{
return [
// 使用远程 MCP 服务器的工具
McpClient::tools('https://mcp.example.com'),
// 使用本地 MCP 服务器的工具
McpServer::tools(MyMcpServer::class),
];
}
}
artisan dev 命令
新增 artisan dev,一条命令启动所有开发进程。服务器、队列 Worker、日志 tail、Vite 会以带颜色的输出并行运行。
// 在服务提供者中注册额外命令
use Illuminate\Foundation\Console\DevCommands;
DevCommands::artisan('reverb:start', 'reverb')->orange();
DevCommands::register('stripe listen --forward-to ' . config('app.url'))->green();
会自动检测 Node.js 包管理器(npm、yarn、pnpm、bun)。这是 Artisan 官方约定,用于替代以往的 composer dev 脚本。
路由元数据支持
新增 ->metadata() 方法,可以为路由附加任意元数据。它与路由缓存完全兼容,组上设置的元数据会合并到子路由上。
Route::metadata(['head' => ['robots' => ['noindex'], 'author' => 'Taylor']])
->group(function () {
Route::get('/users', [UserController::class, 'index'])
->metadata(['head' => ['title' => 'Users']]);
});
// 从控制器或中间件访问
$request->route()->getMetadata('head.title'); // 'Users'
$request->route()->getMetadata('head.author', 'Taylor'); // 'Taylor'
不重试的异常处理
对于重试也没有意义的异常(错误输入、永久性外部故障等),现在可以阻止重试。
// 直接在异常类中定义
class InvalidInputException extends RuntimeException
{
public function retry(): bool
{
return false;
}
}
// 也可以在 bootstrap/app.php 中配置
->withExceptions(function (Exceptions $exceptions) {
$exceptions->dontRetry(InvalidInputException::class);
})
schema:dump 的 —without-migration-data 标志
schema:dump 现在可以生成不含迁移表数据行的纯结构快照。
php artisan schema:dump --without-migration-data
between()/unlessBetween() 的时区修复
无论 timezone() 是在 between() 或 unlessBetween() 之前还是之后调用,调度都能以正确的时区运行。
// 两种写法行为一致(以前先写 between 会导致按 UTC 处理的问题)
$schedule->command('foo')->timezone('Europe/Rome')->between('10:00', '12:00');
$schedule->command('foo')->between('10:00', '12:00')->timezone('Europe/Rome');
其他框架变更
Bus::bulk() 支持 Trait:可以在 Trait 中定义队列属性
- MariaDB 向量索引:MariaDB 支持向量索引
attachFromStorage() helper:通知的 MailMessage 可以从存储中附加文件
Cache::rememberWithState():支持带状态的缓存
- 并行测试用的维护模式驱动:
array 驱动让每个进程持有独立的维护状态
whenFilledEnum():支持基于 Enum 的字段条件处理
- JSON Schema 的 anyOf 支持:验证时可使用 JSON Schema 的
anyOf
Inertia
Client\Request::uri():获取客户端请求的 URI
- 锚点的
target 属性支持:<Link> 组件支持 target="_blank" 等
- 表单的
async 选项:表单组件支持异步提交
titleCallback 得到页面信息:标题回调会拿到页面数据
Laravel Cloud / Laravel Forge
| 产品 | 主要更新 |
|---|
| Laravel Cloud | 完整支持 Symfony 应用(Symfony 7.4 LTS / 8.x,PHP 8.2~8.5),支持从 Stripe Projects 部署与付款,可按团队成员配置 Slack / 邮件通知 |
| Laravel Forge | 托管 Valkey 缓存(可从面板创建与管理)、托管对象存储、通知邮件重设计 |