
Laravel官方已于2026年3月17日正式发布了v13.0.0版本。这是继Laravel 12之后,又一次遵循“持续小步快跑”理念的重大更新。官方将其核心亮点定位为 AI-native workflows、更强的默认配置 以及 更直观的开发 API。
值得注意的是,本次版本的破坏性变更极少。官方强调,Laravel 12+ 用户甚至可以直接利用 Laravel Boost 的 /upgrade 命令,让AI代理帮你完成自动化升级。根据社区反馈,整个升级过程最快仅需5分钟。
尽管升级平滑,但Laravel 13依然带来了大量值得深入研究的亮点。下面,我们就来逐一解析本次更新的核心内容及其背后的设计理念。
核心亮点一览
1. Laravel AI SDK(正式首发)
这是官方推出的第一方AI工具包,旨在统一支持文本生成、Tool-calling Agent、embeddings(嵌入)、音频合成、图像生成、向量存储等多种人工智能能力。
现在,开发者可以用最“Laravel”的方式编写AI功能。它一键统一了OpenAI、Claude、Gemini等主流模型的调用接口,让你无需再纠结各家SDK的细微差异。
代码示例清晰地展示了其优雅的语法:
$response = SalesCoach::make()->prompt('分析这段销售话术...');
$image = Image::of('一只坐在厨房台面上的甜甜圈')->generate();
2. PHP Attributes 大面积原生支持
Laravel 13 在控制器、中间件、授权、队列任务、Eloquent、事件、通知、验证、测试等超过15个核心组件中原生支持了PHP属性配置。例如 #[Middleware]、#[Authorize]、#[Tries]、#[Backoff] 等,这使得主体逻辑代码变得更加干净和直观。
#[Middleware('auth')]
#[Authorize('create', [Comment::class, 'post'])]
public function store(Post $post) { }
这种方式虽然让代码更优雅、可读性更高,但对于习惯了注释式配置的国内PHPer来说,可能需要一个适应过程。不过,这无疑是PHP 8.0+ 的大势所趋,新项目建议直接采用属性,老项目则可以逐步迁移。
3. Queue::route() 集中队列路由
新的 Queue::route() 方法允许你按Job类统一设置连接(connection)和队列名(queue),彻底解决了配置散落在各处的痛点。
use App\Concerns\RequiresVideo;
use App\Jobs\ProcessPodcast;
use App\Jobs\ProcessVideo;
use Illuminate\Support\Facades\Queue;
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');
Queue::route(RequiresVideo::class, queue: 'video');
}
4. 原生 JSON:API Resources 支持
现在,Laravel 原生支持 JSON:API 标准的资源类,可以自动处理资源序列化、关系包含、稀疏字段集、链接生成等,让符合标准的API开发更加快捷。
<?php
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\JsonApi\JsonApiResource;
class PostResource extends JsonApiResource
{
/**
* The resource's attributes.
*/
public $attributes = [
'title',
'body',
'created_at',
];
/**
* The resource's relationships.
*/
public $relationships = [
'author' => UserResource::class,
'comments',
];
}
在路由中使用也变得异常简单:
Route::get('/api/posts/{post}', function (Post $post) {
return new PostResource($post);
});
// 或者更简洁的 Eloquent 方法
Route::get('/api/posts/{post}', function (Post $post) {
return $post->toResource();
});
5. Cache::touch() 高效延长 TTL
新增的 Cache::touch() 方法可以直接延长一个已存在缓存项的生存时间(TTL),无需先 get 再 put,性能提升显著。
Cache::touch('user_session:123', 3600);
6. 语义/向量搜索原生集成
Laravel 13 原生集成了对 PostgreSQL 及其 pgvector 扩展的支持,开箱即用地支持向量相似度查询和嵌入工作流。这为构建AI应用提供了极大便利。
DB::table('documents')
->whereVectorSimilarTo('embedding', 'Napa Valley 最佳酒庄')
->limit(10)
->get();
这个特性也暗示着,是时候将默认数据库考虑为 PostgreSQL 15+ 了,其原生的向量搜索能力能让AI应用开发流程更加顺畅。
7. 几个容易被忽略但超级实用的“小彩蛋”
Str::initials() 新助手函数:一行代码提取姓名首字母(例如 “Taylor Otwell” → “TO”),制作头像、显示缩写时非常方便。
saveOrIgnore() & insertOrIgnoreReturning():Eloquent 和查询构建器新增了冲突安全插入方法,处理唯一约束场景更加优雅。
schedule:pause / schedule:resume 命令:终于可以暂停或恢复整个任务调度器了,并且附带了相应的事件,让定时任务管理更加灵活。
eventStream() 响应:支持服务器推送事件(Server-Sent Events)流,非常适合实时通知、AI流式输出等场景。
PendingRequest pool() 默认并发 2:HTTP 客户端的并发默认值从 1 提升到了 2,虽然是小优化,但在批量请求场景下速度提升明显。
- Artisan 命令新增
usage/help/hidden 属性:现在可以直接在命令类上使用属性来定义帮助文本和隐藏状态,代码更清晰。
升级说明
- 最低要求:PHP 8.3+(不再支持 PHP 8.2)。
- 升级难度:破坏性变更极少,官方强调“大部分应用升级几乎无需改动”。
- 升级工具:Laravel 12+ 用户可以直接在 Laravel Boost 中运行
/upgrade 命令,借助AI代理完成升级(社区已有人5分钟搞定)。
支持周期
- Bug 修复:18个月(至2027年第三季度)。
- 安全更新:2年(至2028年第一季度)。
Taylor Otwell 原话:
“本次发布周期我们重点放在了最小化破坏性变更上,而是持续交付不破坏现有应用的开发者体验改进。”
如果你想第一时间尝鲜,直接运行以下命令即可:
composer require laravel/framework:^13.0
Laravel 13 的发布,标志着其AI原生时代的正式开启!本次更新在提升开发体验和拥抱现代AI工作流之间找到了很好的平衡。如果你已经升级,不妨在云栈社区分享你的体验和心得。
相关阅读