编程

Laravel 13 正式发布:新特性一览。

366 2026-03-03 18:19:00

Laravel 13 是 Laravel 框架下的主版本,已于 2026 年 3 月发布。此次发布的版本要求使用 PHP 8.3 以上版本,将遵循 Laravel 的标准支持周期,Bug 修复持续到 2027 年 Q3 季度,安全更新持续至 2028 年 Q1 季度。

新特性

版本要求 PHP 8.3 以上

Laravel 13 放弃了对 PHP 8.2 的支持,现在要求 PHP 8.3 以上版本

PHP 注解支持

PR #58578 引入了 PHP 8 注解(Attribute)作为配置 Laravel 组件类属性的备用方案。这不是一个破坏性更新 —— 现有的基于属性的配置仍然生效。

Eloquent 模型

用于定义模型的 $table$hidden$fillable 及其他属性的新注解:

#[Table('users', key: 'user_id', keyType: 'string', incrementing: false)]
#[Hidden(['password'])]
#[Fillable(['name', 'email'])]
class User extends Model {}

可用的模型注解:

  • #[Appends]
  • #[Connection]
  • #[Fillable]
  • #[Guarded]
  • #[Hidden]
  • #[Table]
  • #[Touches]
  • #[Unguarded]
  • #[Visible]

队列任务(Job)

队列配置可用在 Job 类上直接定义:

#[Connection('redis')]
#[Queue('podcasts')]
#[Tries(3)]
#[Timeout(120)]
class ProcessPodcast implements ShouldQueue {}

可用队列注解:

  • #[Backoff]
  • #[Connection]
  • #[FailOnTimeout]
  • #[MaxExceptions]
  • #[Queue]
  • #[Timeout]
  • #[Tries]
  • #[UniqueFor]

这些属性也应用到监听器 listener、通知 notification, mailable 及关播事件。

控制台命令

命令可以使用注解而非类属性来定义其签名和描述:

#[Signature('mail:send {user} {--queue}')]
#[Description('Send a marketing email to a user')]
class SendMailCommand extends Command {}

其他组件

注解也可用于表单请求(#[RedirectTo], #[StopOnFirstFailure]),API 资源(#[Collects], #[PreserveKeys]),工厂(#[UseModel]) 和测试 seeder (#[Seed], #[Seeder]).

Cache::touch()

PR #55954 添加了一个 Cache::touch() 方法,它扩展了缓存项的 TTL 而无需获取或者重新恢复其值:

// Extend by seconds
Cache::touch('user_session:123', 3600);
 
// Extend with a DateTime
Cache::touch('analytics_data', now()->addHours(6));
 
// Extend indefinitely
Cache::touch('report_cache', null);

以前,延长 TTL(生存时间)需要先执行 get 操作,再执行 put 操作,这意味着会不必要地通过网络传输缓存的值。Cache::touch() 方法则跳过了这一步——Redis 使用单个 EXPIRE 命令,Memcached 使用 TOUCH,而数据库驱动则发出单个 UPDATE

该方法成功时返回 true,如果键不存在则返回 false。该方法已在所有缓存驱动中实现:Array、APC、Database、DynamoDB、File、Memcached、Memoized、Null 和 Redis。

Laravel AI SDK

Laravel 13 引入官方 Laravel AI SDK,为文本生成、工具调用 agent、Embedding 嵌入、音频、图像和向量存储集成提供了一个统一的 API。 

JSON:API 资源

Laravel 现在引入官方 JSON:API 资源,使之可以直接返回兼容 JSON:API 标准的响应。

JSON:API 资源处理资源对象的序列化、关系包含、稀疏字段集、链接和符合 JSON:API 的响应头。

队列路由

Laravel 13 新增了通过  Queue::route(...)  按类进行队列路由的功能,允许你在一个中心位置为特定任务定义默认的队列/连接路由规则:

Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');

语义化/向量搜索

Laravel 13 具备原生向量查询支持、嵌入工作流,以及在搜索、查询和 AI SDK 中均有文档说明的相关 API。

这些特性使得使用 PostgreSQL + pgvector 构建 AI 驱动的搜索体验变得简单直接,包括针对直接由字符串生成的嵌入向量进行相似性搜索。

例如,你可以直接从查询构建器运行语义相似性搜索:

$documents = DB::table('documents')    ->whereVectorSimilarTo('embedding', 'Best wineries in Napa Valley')    ->limit(10)    ->get();

支持时间线

根据 Laravel 既定的支持政策,Laravel 13 将获得漏洞修复支持直至 2027 年第三季度,并获得安全更新直至 2028 年第一季度:

VersionPHP (*)发布事件漏洞修复安全修复
108.1 - 8.3February 14th, 2023August 6th, 2024February 4th, 2025
118.2 - 8.4March 12th, 2024September 3rd, 2025March 12th, 2026
128.2 - 8.5February 24th, 2025August 13th, 2026February 24th, 2027
138.3 - 8.5Q1 2026Q3 2027Q1 2028

Laravel 12 发布于,2025 年 2 月 24 日,将持续接收:

  • 漏洞修复直到 2026 年 8 月 13 日
  • 安全修复直到 2027 年 2 月 24 日

更新到 Laravel 13