Migrations
Ringkasan
Sutomo menggunakan custom migration runner (database/migrations/0000_runner_migration.php) sebagai pengganti direktori migration flat bawaan Laravel. Migrasi diorganisir dalam subdirektori versi untuk menjaga riwayat migrasi tetap terkelola.
Struktur Versi
database/migrations/
├── 0000_runner_migration.php
├── v1_0_0/ → 000_migrate_core.php, 001_*, ... 017_*
├── v1_1_0/ → 002_create_application_management_table.php, ...
├── v1_2_0/
├── v1_3_0/
├── v1_4_0/
└── v1_5_0/Aturan Penamaan
{version}/{sequence}_{descriptive_snake_name}.php{version}=v{major}_{minor}_{patch}(contoh:v1_3_0){sequence}= 3-digit zero-padded (contoh:000,017){name}= Snake_case deskriptif
Cara Buat Migration
1. Tentukan versi
Cek folder versi terakhir. Jika belum ada untuk batch fitur baru, buat folder baru:
bash
mkdir database/migrations/v1_6_02. Cari nomor urut berikutnya
bash
ls database/migrations/v1_5_0/
# 000_add_lat_lng_to_schools_table.php
# 001_add_username_to_users_table.php3. Generate migration
bash
php artisan make:migration add_phone_to_users_table
# Hasil: database/migrations/2026_07_30_123456_add_phone_to_users_table.php
mv database/migrations/2026_07_30_123456_add_phone_to_users_table.php \
database/migrations/v1_5_0/007_add_phone_to_users_table.phpAturan Migration
Boleh ✅
- Buat direktori versi baru untuk batch fitur signifikan
- Pakai nama deskriptif
- Migration kecil dan fokus — satu tabel atau satu kolom per file
- Pakai
Schema::hasTable()di versi lanjutan untuk cegah duplikat - Test method
up()dandown()
Jangan ❌
- Jangan edit migration yang sudah di-deploy — buat yang baru
- Jangan pakai nomor urut seperti
999 - Jangan gabung perubahan schema yang tidak terkait dalam satu file
- Jangan hapus migration lama dari produksi
File Penting
| File | Tujuan |
|---|---|
database/migrations/0000_runner_migration.php | Runner custom — baca env folder, eksekusi migration |
database/migrations/v1_0_0/ to v1_5_0/ | Direktori migration per versi |
phpunit.xml | MIGRATION_RUNNER_FOLDERS untuk test |