mcpField
L
laravel:migrations-and-factories

laravel:migrations-and-factories

github.com/jpcaparasDevelopment157157 installsUpdated 17w ago
Repository

About laravel:migrations-and-factories

A Laravel guide to migrations and factories for developers managing testable, reversible schema changes. It covers migration practices, factory and seed data design, and database testing.

Key features

  1. 01Pair models with migrations and factories
  2. 02Manage schema changes through migrations
  3. 03Organize factories with state modifiers
  4. 04Build data graphs through relationships
  5. 05Test with transactions or RefreshDatabase

Use cases

  1. 01Create a model with its migration and factory
  2. 02Generate data for feature tests
  3. 03Safely roll back database migrations

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/jpcaparas/superpowers-laravel --skill laravel:migrations-and-factories

After installing, type/laravel:migrations-and-factoriesin Claude Code to confirm it loaded.

Details

From the project README

Migrations and Factories

Keep schema changes safe, testable, and reversible.

Commands

# 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

Rules

  • Pair each new model with a migration and a factory
  • If a migration was merged to main, never edit it—add a new one
  • On feature branches, you may amend migrations created on that branch (if not merged)
  • Seed realistic but minimal datasets in seeder classes; keep huge datasets external
  • Laravel 13+: guard conditional schema changes with Schema::hasForeignKey('posts', 'posts_user_id_foreign'); use $table->vector('embedding', dimensions: 1536) for pgvector columns (see laravel:vector-search)

Factories

  • Prefer state modifiers (e.g., ->state([...])) over boolean flags
  • Use relationships (e.g., belongsTo) in factories to build realistic graphs
  • Keep factories fast; move expensive setup to seeds where possible

Testing

  • Use factories in tests; avoid manual inserts
  • For integration tests touching DB, use transactions or RefreshDatabase

Comments

Markdown supported