- Laravel October Product Updates
- Laravel Framework changelog — October 2026
- Laravel Framework changelog RSS
Laravel Framework
10 月的发布范围
除官方 Changelog 中的主要新功能外,还根据发布说明确认了日期和引入版本。
下面详细介绍官方 Changelog 中列出的 9 个项目。细小的修复和依赖变更请参阅各发布说明。
使用 QUERY 路由定义带请求体的搜索
v13.35.0 新增了对应 HTTPQUERY 方法的 Route::query()。可以定义通过请求体而不是 GET 查询字符串接收搜索条件的路由。
Route::any() 也会匹配 QUERY 请求,路由列表也能识别该方法。上面的 SearchProductsController 假定为应用中实现了搜索处理的 Invokable Controller。
一手资料:Register QUERY Routes、Laravel 13 官方 routing.md。相关页面:路由、CSRF 保护
在写入后的其他请求中也避免读取过期数据
在读写分离的数据库中,更新后立即进行的读取可能会发往尚未同步的 Read replica。现有的sticky 设置只针对同一请求内,而 v13.38.0 的 PreventStaleDatabaseReads 会为同一会话的后续请求也设置保护期。
在 bootstrap/app.php 中 import Illuminate\Foundation\Http\Middleware\PreventStaleDatabaseReads,并在 withMiddleware() 的回调中通过 $middleware->web(append: [PreventStaleDatabaseReads::class]); 添加。该功能不会自动启用。
中间件会把对默认数据库连接的写入时间记录到会话中,默认在写入后的 2 秒内将该连接的读取发往 Write DB。可以把注册的类换成 PreventStaleDatabaseReads::for(5) 等来修改保护期。
由于使用会话,它必须在 StartSession 之后执行。它不会切换其他会话或其他数据库连接的读取,也不会检测副本是否已完成同步。
一手资料:Avoid Stale Reads After Database Writes、Laravel 13 官方 database.md。相关页面:数据库、会话
仅让特定处理从 Write DB 读取
同样在 v13.38.0 中新增的Connection::usingWritePdo() 只在回调执行期间将该连接的读取目标切换到 Write DB。它不是按会话进行保护,适用于想在应用中明确指定重要读取范围的场景。
统一将计划任务设置为单服务器执行
为了减少在多台服务器上运行调度器时遗漏为每个任务指定onOneServer() 的情况,v13.35.0 新增了 Schedule::alwaysOnOneServer()。在 AppServiceProvider 的 boot() 中调用,即可一次性应用到相关的计划任务。
onOneServer() 需要所有服务器共享的中央缓存。官方文档列出的支持驱动为 database、memcached、dynamodb 和 redis。仅添加该设置并不会提供跨服务器的锁基础设施。在 Fake 中指定属性来验证分发
从 v13.35.0 起,可以向 Queue、Bus、Event、Notification 的 Fake 传入期望属性的数组。不再需要为了简单的属性比较而每次都编写回调。 例如,使用带有公开order 属性的 ShipOrder 任务和测试中准备的 $order 时,可以这样验证:
is() 比较,因此表示同一模型的不同实例也能匹配。Fake 验证的是分发,而不是任务本身的执行结果。
一手资料:Assert Fake Dispatches by Their Properties、Laravel 13 官方 queues.md。相关页面:队列、模拟
按比例指定 worker 的内存上限
从 v13.35.0 起,queue:work 的 --memory 可以指定相对于 PHP memory_limit 的比例。无需为每个环境重新计算固定的 MB 值,就能按照 PHP 设置调整 worker 的退出阈值。
memory_limit 为无限制的 -1 时,请使用 MB 值而不是比例。因达到阈值而退出的 worker 的重启,交由 Supervisor 等进程监控负责。
一手资料:Set Queue Worker Memory Limits as Percentages、Laravel 13 官方 queues.md
以专用 Content-Type 返回 Markdown
v13.35.0 为响应工厂新增了markdown()。它以 text/markdown 返回 Markdown 正文,也可以指定状态码和附加头。
wantsMarkdown() 等选择响应格式的处理组合使用。它不是把 Markdown 转换为 HTML 返回的功能,而是把 Markdown 本身作为响应提供的 API。
一手资料:Return Markdown Responses、Laravel 13 官方 responses.md。相关页面:响应
在 Vitess 中以 OLAP 模式执行分析查询
v13.36.0 为 MySQL 连接新增了isVitess() 和 olap()。可以判断是否在使用 Vitess 或 PlanetScale,并以 OLAP 工作负载执行分析用途的查询。
通过 Builder 找到现有验证规则
v13.36.0 为许多以前以字符串指定的规则新增了Rule 的 Builder 方法。requiredWith()、acceptedIf()、regex()、timezone() 等更容易通过 IDE 补全找到,并且可以在保持现有验证行为的同时选择写法。
Laravel Cloud
官方月度博客介绍了以下 3 个项目。
一手资料:Laravel October Product Updates — Laravel Cloud、Laravel Cloud changelog。相关页面:Laravel Cloud 介绍
Laravel Forge
- PHP 安全更新通知:按服务器显示受 10 月 PHP 安全发布影响的版本,并提示修复版本的提供情况。可以通过 Recheck versions 重新确认实际安装的版本。重新确认显示和更新 PHP 是不同的操作。
- 预配失败的处理:将无法完成的服务器显示为失败状态,并提供通知、后续操作指引和删除操作。PHP 和 Nginx 的安装也会在确定失败前重试。
相关文章
2026 年 9 月更新
回顾运行时构建 AI 提供者、搜索扩展、Mercure 以及 Cloud 的隔离预览环境。
数据库指南
确认读写分离和数据库连接的基础知识。