关于 laravel:migrations-and-factories
面向 Laravel 开发者的迁移与工厂实践指南,帮助管理可测试、可回滚的数据库结构变更。内容包括迁移维护规则、工厂与种子数据,以及数据库测试建议。
主要功能
- 01为模型配套迁移和工厂
- 02使用迁移管理结构变更
- 03以状态修饰符组织工厂
- 04通过关系构建数据图
- 05使用事务或 RefreshDatabase 测试
适用场景
- 01创建模型及其迁移和工厂
- 02为功能测试生成数据
- 03安全回滚数据库迁移
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jpcaparas/ superpowers-laravel --skill laravel:migrations-and-factories安装后在 Claude Code 中输入/laravel:migrations-and-factories确认已加载。
详细介绍
迁移和工厂
确保架构变更安全、可测试且可回滚。
命令
# Create model with migration + factory
sail artisan make:model Post -mfc # or: php artisan make:model Post -mfc
# Run/rollback
sail artisan migrate # or: php artisan migrate
sail artisan migrate:rollback --step=1 # or: php artisan migrate:rollback --step=1
# Fresh DB (dangerous; dev only)
sail artisan migrate:fresh --seed # or: php artisan migrate:fresh --seed
规则
- 每个新模型都应配套迁移和工厂
- 如果迁移已合并到
main,切勿编辑它;应新增迁移 - 在功能分支上,可以修改在该分支创建且尚未合并的迁移
- 在 seeder 类中填充真实但精简的数据集;大型数据集应存放在外部
- Laravel 13+:使用
Schema::hasForeignKey('posts', 'posts_user_id_foreign')保护条件式架构变更;使用$table->vector('embedding', dimensions: 1536)创建 pgvector 列(参见laravel:vector-search)
工厂
- 优先使用状态修饰器(例如
->state([...])),而非布尔标志 - 在工厂中使用关系(例如
belongsTo)来构建真实的数据图 - 保持工厂运行快速;尽可能将耗时的设置移至 seeds
测试
- 在测试中使用工厂;避免手动插入数据
- 执行数据库操作的集成测试应使用事务或
RefreshDatabase
评论
支持 Markdown