Laravel 13 发布:最低 PHP 8.3,Cache::touch() 与 Http::pool 默认并发都有改动
Laravel 13 于 2026-03-17 在 Laracon EU 2026 发布。最低 PHP 版本提高到 8.3,PHP 8.2 不再支持。Bug 修复支持到 2027 Q3,安全支持到 2028 Q1(官方表格写的是 2028 年 3 月 17 日)。
官方强调本次聚焦最小化破坏性变更,多数应用升级几乎不用改业务代码;唯一影响基础设施的是 PHP 版本要求。
相关链接:发布说明、13.x releases.md、Laravel News 发布报道。
PHP Attributes 铺到 15+ 处
头号特性是原生 PHP 属性。框架在 15+ 个位置引入属性写法,替代类属性声明,完全可选、向后兼容。
控制器与授权侧有 #[Middleware]、#[Authorize];队列侧有 #[Tries]、#[Backoff]、#[Timeout]、#[FailOnTimeout]。此外还扩展到 Eloquent、事件、通知、校验、测试、资源序列化等位置。
Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');
Cache::touch():只续期,不取值
以前延长缓存项 TTL 要 get + put 两次往返,还得把取出来的值再传回服务端。Cache::touch() 直接省掉一次往返。
各驱动实现:Redis 侧是单条 EXPIRE,Memcached 用原生 TOUCH,database 驱动是一条 UPDATE。返回 true 表示成功,false 表示键不存在。
已实现该方法的驱动:Array、APC、Database、DynamoDB、File、Memcached、Memoized、Null、Redis。
Reverb 增加 database 驱动
此前 Laravel Reverb 做水平扩展必须用 Redis 作为消息代理。13 新增 database 驱动,用现有的 MySQL 或 PostgreSQL 就能水平扩展,中小应用不必再单独部署 Redis 集群。
Http::pool() 并发默认改为 2
此前 concurrency 为 null,池内请求实际是串行执行的——一个不太显眼的坑。13 把默认值改为 2,开箱即并行。
MySQL 的 DELETE...JOIN 尊重 ORDER BY / LIMIT
Laravel 的 MySQL 语法现在能编译完整的 DELETE...JOIN,包含 ORDER BY 与 LIMIT。此前这些子句会被静默忽略,只能改写成原生 SQL。
第一方 AI SDK
随 13 稳定发布。提供文本生成、工具调用 agent、embedding、音频、图像、向量库集成的统一 API,provider-agnostic(OpenAI、Anthropic 等),内置重试、错误归一化与队列集成。
语义 / 向量搜索
原生向量查询支持,配合 PostgreSQL + pgvector。可以从字符串生成 embedding 存入数据库,再用标准 Eloquent / 查询构造器做相似度检索:
$documents = DB::table('documents')
->whereVectorSimilarTo('embedding', 'Best wineries in ...')
->limit(10)
->get();
JSON:API Resources
第一方支持 JSON:API 规范,资源类负责对象序列化、关系包含、sparse fieldsets、links 与合规响应头。
安全
PreventRequestForgery:请求伪造防护中间件正式化为 PreventRequestForgery,在原有基于 token 的 CSRF 之上增加 origin 感知校验——检查状态变更请求的 Origin 头,作为第二层防护。使用 Inertia.js / Livewire 标准表单的现有应用无需改代码。
Passkey(WebAuthn)认证:直接集成进官方 starter kits 与 Laravel Fortify。用户可用 Face ID、指纹、Windows Hello 或硬件密钥免密登录,新应用开箱可用,不需要第三方包。
其他
- Teams 多租户支持回到官方 starter kits
- 支持 Symfony 7.4 与 8.0
- 测试隔离:Str 工厂在测试之间自动重置