用途
Laravel Migrations 是 fusengine/claude-plugins 中的一个技能,用于在以下场景提供协助:设计数据库结构(schema),或管理 Laravel 13 的迁移文件,涉及 Schema Builder、列定义、索引、外键和 Seeder。
主要能力
- Schema Builder:创建、修改、删除数据表。
- 列类型:50 种以上列类型及其修饰符。
- 索引:主键、唯一、全文、空间索引。
- 外键:带级联选项的约束。
- Seeder:向数据表填充数据。
技能附带参考文档(schema、columns、indexes、foreign-keys、commands、seeding、testing、production、troubleshooting)、模板(建表迁移、改表迁移、中间表迁移、Seeder、迁移测试)、决策指南(迁移类型选择、列类型选择、外键级联场景)以及快速参考与最佳实践。
使用方式
技能规定了一套代理工作流:在开始任何实现之前,并行启动三个代理:fuse-ai-pilot:explore-codebase(检查现有迁移)、fuse-ai-pilot:research-expert(通过 Context7 核对 Laravel 13 模式)、mcp__context7__query-docs(查询具体 Schema Builder 特性)。实现完成后,运行 fuse-ai-pilot:sniper 进行校验。
常用命令示例:
php artisan make:migration create_posts_table
php artisan migrate
php artisan migrate:rollback --step=1
php artisan migrate:fresh --seed
建表示例:
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained()->cascadeOnDelete();
$table->string('title');
$table->text('content');
$table->enum('status', ['draft', 'published'])->default('draft');
$table->timestamps();
$table->softDeletes();
$table->index(['user_id', 'status']);
});
改表示例:
Schema::table('posts', function (Blueprint $table) {
$table->string('slug')->after('title')->unique();
$table->boolean('featured')->default(false);
});
关键规则与最佳实践
- 始终定义
down(),保证迁移可回滚。 - 外键使用
foreignId()->constrained(),而非原始unsignedBigInteger。 - 为外键添加索引,这对性能很关键。
- 部署前测试回滚,验证
down()可用。 - 不修改已部署的迁移,而是新建迁移。
- 建议为常用查询添加复合索引;可用
--pretend预览 SQL。 - 避免使用无 Schema Builder 的原始 SQL。
外键级联选择:restrictOnDelete() 用于财务记录等严格完整性场景;cascadeOnDelete() 用于如文章→评论的自动清理;nullOnDelete() 用于可选关系的保留;noActionOnDelete() 用于审计日志。
Laravel 13 相关特性
Schema::ensureVectorExtensionExists():在 PostgreSQL 上启用 pgvector 扩展,配合$table->vector('embedding', dimensions: 1536)->index()使用(HNSW 余弦向量索引);向量列/索引在 MariaDB 11.7+ 无需扩展。- Schema Builder 13.x 新增:
$table->foreignUuidFor(User::class)(13.9+)、foreignUlidFor()(13.25+);无锁索引->online()(PostgreSQL / SQL Server);索引或外键上的->inplace()(13.33+,MySQL,INPLACE DDL 算法)。
适用场景与限制
适用于使用 Laravel 13 进行数据库结构设计、迁移编写与审查、外键与索引规划、数据填充以及迁移测试和部署前检查的开发者。技能内容面向 Laravel 13;早期 Laravel 版本的部分新特性可能不适用。具体参考文档、模板与代理功能的完整内容与可用性以来源资料为准,资料未提供更多细节的部分暂未说明。