| name | Database Migration |
| description | Panduan membuat migration, seeder, dan factory sesuai standar Laravel. |
Database Migration Skill
Gunakan skill ini untuk membuat atau memodifikasi struktur database dengan aman.
🔌 MCP Tools yang Digunakan
PENTING: Selalu gunakan MCP tools ini sebelum membuat perubahan!
| Tool | Fungsi |
|---|
mcp_laravel-boost_database-schema | Lihat schema existing (tabel, kolom, FK, index) |
mcp_laravel-boost_search-docs | Cari dokumentasi Laravel migrations |
mcp_laravel-boost_tinker | Verifikasi sample data atau test code snippet |
read_file | Baca file referensi existing |
Contoh Penggunaan
# Sebelum buat migration, lihat schema existing:
mcp_laravel-boost_database-schema()
# Cari dokumentasi jika ragu:
mcp_laravel-boost_search-docs(queries: ["migration foreign key"])
# Verifikasi struktur tabel setelah migrate:
mcp_laravel-boost_database-schema(summary: true, filter: "products")
🎯 Decision Tree
Apa yang perlu dilakukan?
│
├── Buat tabel baru ──────────────→ Migration + Model + Factory
├── Tambah kolom ke tabel ────────→ Migration (alter table)
├── Ubah struktur kolom ──────────→ Migration (modify column)
├── Hapus kolom/tabel ────────────→ Migration (drop) ⚠️ DESTRUCTIVE
├── Buat data awal ───────────────→ Seeder
└── Buat test data ───────────────→ Factory
🚀 Quick Start
Commands
// turbo-all
./vendor/bin/sail artisan make:migration create_{features}_table
./vendor/bin/sail artisan make:model {Feature} -mf
./vendor/bin/sail artisan migrate
./vendor/bin/sail artisan migrate:rollback
📁 Struktur File & Referensi
| Tipe | Lokasi | Referensi Pattern |
|---|
| Migration | database/migrations/ | Ikuti pola *_create_employees_table.php |
| Model | app/Models/ | Ikuti pola Employee.php |
| Factory | database/factories/ | Ikuti pola EmployeeFactory.php |
| Seeder | database/seeders/ | Ikuti pola EmployeeSeeder.php |
TIP: Gunakan read_file untuk baca file referensi, bukan template.
🔄 Migration Patterns
Create Table
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->text('description')->nullable();
$table->decimal('price', 10, 2);
$table->foreignId('category_id')->constrained()->cascadeOnDelete();
$table->timestamps();
$table->index('name');
});
Add Column
Schema::table('products', function (Blueprint $table) {
$table->string('sku')->after('name')->nullable();
});
Drop Column
Schema::table('products', function (Blueprint $table) {
$table->dropForeign(['category_id']);
$table->dropColumn('category_id');
});
🔗 Foreign Key Rules
| Action | Syntax |
|---|
| Cascade delete | ->cascadeOnDelete() |
| Set null on delete | ->nullOnDelete() |
| Restrict delete | ->restrictOnDelete() |
⚠️ Aturan Penting
DILARANG di Production:
- ❌
migrate:fresh (hapus semua tabel)
- ❌ Drop column tanpa backup
Best Practices:
- ✅ Gunakan
mcp_laravel-boost_database-schema sebelum buat migration
- ✅ Test migration di local dulu
- ✅ Gunakan
nullable() untuk kolom baru
- ✅ Test rollback:
migrate:rollback lalu migrate lagi
✅ Verification
// turbo-all
./vendor/bin/sail artisan migrate
./vendor/bin/sail artisan migrate:status
./vendor/bin/sail artisan migrate:rollback
./vendor/bin/sail artisan migrate
Setelah migrate, gunakan mcp_laravel-boost_database-schema(summary: true, filter: "{table}") untuk verifikasi struktur tabel.