SuperAPI AI 工具集

laravel-migrations

编程与开发

查看项目

更新于 10-26 16:21

技能介绍

用途

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 版本的部分新特性可能不适用。具体参考文档、模板与代理功能的完整内容与可用性以来源资料为准,资料未提供更多细节的部分暂未说明。