跳转到主要内容

简介

Laravel 13 于 2026 年 3 月 17 日发布。作为每年一度的例行大版本发布,Laravel 13 特别聚焦于 AI 原生工作流更安全的默认行为、以及表达力更强的开发者 API 破坏性变更被控制到最少,大部分应用只需少量修改即可完成升级。同时新增了 Laravel AI SDK 和语义搜索等一大批可能大幅改变现代应用开发方式的新功能。
Laravel 13 支持策略:Bug 修复到 2027 年 Q3,安全修复提供至 2028 年 3 月 17 日

PHP 需求更新

Laravel 13 需要 PHP 8.3 及以上。对 PHP 8.2 的支持已经结束。
版本PHP发布日期Bug 修复期限安全修复期限
118.2 - 8.42024 年 3 月 12 日2025 年 9 月 3 日2026 年 3 月 12 日
128.2 - 8.52025 年 2 月 24 日2026 年 8 月 13 日2027 年 2 月 24 日
138.3 - 8.52026 年 3 月 17 日2027 年 Q32028 年 3 月 17 日
PHP 8.3 带来的主要好处包括:类型化常量、json_validate() 函数、#[\Override] 属性等可用。

主要新功能

Laravel AI SDK

Laravel 13 的重头戏是官方 AI SDK。它以统一的 API 提供文本生成、工具调用智能体、嵌入、语音、图像生成以及向量存储集成。 在不绑定特定供应商的前提下构建 AI 功能,同时保留 Laravel 风格的开发体验。 文本生成(智能体)
use App\Ai\Agents\SalesCoach;

$response = SalesCoach::make()->prompt('请分析这段销售通话记录……');

return (string) $response;
图像生成
use Laravel\Ai\Image;

$image = Image::of('厨房台面上的甜甜圈')->generate();

$rawContent = (string) $image;
语音合成
use Laravel\Ai\Audio;

$audio = Audio::of('我很喜欢用 Laravel 写代码。')->generate();

$rawContent = (string) $audio;
生成嵌入
use Illuminate\Support\Str;

$embeddings = Str::of('Napa Valley 的葡萄酒最棒。')->toEmbeddings();
详情请参考 Laravel AI SDK 文档

语义 / 向量搜索

新增了与 AI SDK 联动的原生向量查询支持。可以直接通过 Query Builder 使用 PostgreSQL + pgvector 进行语义搜索。
$documents = DB::table('documents')
    ->whereVectorSimilarTo('embedding', 'Napa Valley 最好的酒庄')
    ->limit(10)
    ->get();
从添加嵌入列到查询,全都可以在 Laravel 生态里闭环完成。

JSON:API 资源

Laravel 新增了官方的 JSON:API 资源支持。可以轻松返回符合 JSON:API 规范的响应。
  • 资源对象序列化
  • 关联包含
  • 稀疏字段集
  • 链接
  • 符合 JSON:API 规范的响应头

PHP 属性的扩展

Laravel 13 把基于 PHP 属性的声明式配置扩展到了整个框架。 应用到控制器
<?php

namespace App\Http\Controllers;

use App\Models\Comment;
use App\Models\Post;
use Illuminate\Routing\Attributes\Controllers\Authorize;
use Illuminate\Routing\Attributes\Controllers\Middleware;

#[Middleware('auth')]
class CommentController
{
    #[Middleware('subscribed')]
    #[Authorize('create', [Comment::class, 'post'])]
    public function store(Post $post)
    {
        // ...
    }
}
应用到队列作业
use Illuminate\Queue\Attributes\Tries;
use Illuminate\Queue\Attributes\Backoff;
use Illuminate\Queue\Attributes\Timeout;
use Illuminate\Queue\Attributes\FailOnTimeout;

#[Tries(3)]
#[Backoff(60)]
#[Timeout(120)]
#[FailOnTimeout]
class ProcessPodcast implements ShouldQueue
{
    // ...
}
新增的主要属性:
属性用途
#[Middleware]为控制器 / 方法应用中间件
#[Authorize]为控制器执行策略检查
#[Tries]队列作业的最大尝试次数
#[Backoff]队列作业的退避时间
#[Timeout]队列作业的超时时间
#[FailOnTimeout]超时时是否标记作业失败
Eloquent、事件、通知、验证、测试、资源序列化 API 等也引入了新的属性。

队列路由

通过 Queue::route(...),可以在一处集中定义特定作业的默认队列 / 连接路由规则。
use App\Jobs\ProcessPodcast;
use Illuminate\Support\Facades\Queue;

Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');
不再需要在 Job 类里硬编码队列名,可以把基础设施配置和代码解耦。

缓存 TTL 延长

Cache::touch(...) 可以在不取回并重存值的情况下延长缓存项的 TTL。
// 不改变现值,把 TTL 延长 3600 秒
Cache::touch('expensive-computation', 3600);

安全加固

CSRF 保护加强(PreventRequestForgery)

CSRF 中间件从 VerifyCsrfToken 重命名为 PreventRequestForgery,并新增了基于 Sec-Fetch-Site 头的请求来源校验。
use Illuminate\Foundation\Http\Middleware\PreventRequestForgery;

// 在测试中移除该中间件
->withoutMiddleware([PreventRequestForgery::class]);
VerifyCsrfToken 会作为废弃的别名保留,但建议迁移到新类名。

缓存反序列化限制

config/cache.php 新增了 serializable_classes 选项,默认值为 false。这样即便 APP_KEY 泄露,也可以防御 PHP 反序列化攻击。
// config/cache.php
'serializable_classes' => [
    App\Data\CachedDashboardStats::class,
    App\Support\CachedPricingSnapshot::class,
],
如果你在缓存中存储了 PHP 对象,需要将对应的类显式加入允许列表。

启动套件变化

Laravel 12 中焕新的启动套件(React/Vue/Livewire 基础)在 Laravel 13 中依然可用。 配合 Laravel 13 的发布节奏,Inertia v3 也一同发布。主要变化:
  • 更简单的 layout props
  • 支持 Vite 8
  • 新增 withApp 回调
  • 新的 Blade 组件
如果你在使用 Inertia v3,可以一并考虑升级。

其他改进

AI 辅助升级(Laravel Boost)

Laravel Boost 是官方的 MCP 服务器。它可以与 Claude Code、Cursor、OpenCode、Gemini、VS Code 等 AI 编辑器联动,通过 /upgrade-laravel-v13 斜杠命令实现半自动升级。
composer require laravel/boost:^2.0 --dev

契约新增

以下契约新增了方法:
契约新增方法
Bus\DispatcherdispatchAfterResponse
Routing\ResponseFactoryeventStream(SSE 支持)
Auth\MustVerifyEmailmarkEmailAsUnverified
Queue\QueuependingSizedelayedSizereservedSizecreationTimeOfOldestPendingJob
Cache\Store / Cache\Repositorytouch

总结

Laravel 13 是一次“破坏性变更少,新功能多”的发布。升级工作量小,但特别是 AI SDK语义搜索 有潜力改变现代应用的开发方式。 当你准备好把已有应用从 Laravel 12 升级到 13 时,详细步骤请参考下面这份指南。

Laravel 12 升级到 13 指南

详细列出破坏性变更清单和分步升级操作。
最后修改于 2026年7月13日