Skip to content

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_0

2. 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.php

3. 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.php

Aturan 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() dan down()

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

FileTujuan
database/migrations/0000_runner_migration.phpRunner custom — baca env folder, eksekusi migration
database/migrations/v1_0_0/ to v1_5_0/Direktori migration per versi
phpunit.xmlMIGRATION_RUNNER_FOLDERS untuk test