Laravel 官方在 3 月 17 日发布了 v13.0.0,这是继 Laravel 12 之后又一次「持续小步快跑」的重大版本。官方定位关键词是 AI-native workflows更强的默认配置更直观的开发 API

破坏性变更极少,Laravel 12+ 用户甚至可以用 Laravel Boost 的 /upgrade 命令让 AI 代理帮你自动升级(社区反馈 5 分钟搞定)。

尽管如此,任然有很多亮点值得一一细看,下面我们挑选几个主要亮点解析这次更新的核心内容和背后的设计理念。

核心亮点一览

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 大面积原生支持

在控制器、中间件、授权、队列任务、Eloquent、事件、通知、验证、测试等 15+ 处原生支持属性配置(如 #[Middleware]#[Authorize]#[Tries]#[Backoff] 等),主体逻辑代码更干净清爽。

#[Middleware('auth')]
#[Authorize('create', [Comment::class, 'post'])]
public function store(Post $post) { }

PS: 虽然代码更优雅、可读性更高,但国内 PHP 们可能会有些不适应,毕竟习惯了注释式的配置方式。不过这也是 PHP 8.0+ 的趋势了,未来新项目建议直接上属性,老项目可以慢慢迁移。

3. Queue::route() 集中队列路由

可按 Job 类统一设置连接和队列名,再也不用到处散落配置。

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 支持

自动处理资源序列化、关系包含、稀疏字段集、链接等,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);
});

Route::get('/api/posts/{post}', function (Post $post) {
    return $post->toResource();
});

5. Cache::touch() 高效延长 TTL

直接延长缓存 TTL,无需先 get 再 put,性能提升明显:

Cache::touch('user_session:123', 3600);

6. 语义 / 向量搜索原生集成

原生集成 PostgreSQL + pgvector,支持向量相似度查询和嵌入工作流:

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() 响应
    支持服务器推送事件流,适合实时通知、AI 流式输出场景。

  • PendingRequest pool() 默认并发 2
    HTTP 客户端并发默认值从 1 提升到 2,小优化但批量请求场景明显更快。

  • Artisan 命令新增 usage/help/hidden 属性
    现在可以在命令类上直接用属性写帮助文本和隐藏状态。

升级说明

  • 最低要求:PHP 8.3+(不再支持 8.2)
  • 破坏性变更极少,官方强调「大部分应用升级几乎无需改动」
  • Laravel 12+ 用户可直接在 Laravel Boost 中运行 /upgrade,让 AI 代理帮你完成升级(社区已有人 5 分钟搞定)

支持周期

  • Bug 修复:18 个月(至 2027 Q3)
  • 安全更新:2 年(至 2028 Q1)

Taylor Otwell 原话
“本次发布周期我们重点放在了最小化破坏性变更上,而是持续交付不破坏现有应用的开发者体验改进。”

想第一时间尝鲜?直接 composer require laravel/framework:^13.0 即可!

Laravel 13,AI 原生时代正式开启!🚀

你已经升级了吗?欢迎评论区分享升级体验~

相关阅读:

  • GitHub 完整 Release Notes: https://github.com/laravel/framework/releases/tag/v13.0.0

  • 官方文档: https://laravel.com/docs/13.x/releases

  • Laravel News: https://laravel-news.com/laravel-13-released

  • 升级指南: https://laravel.com/docs/13.x/upgrade