
Pendahuluan
Pernah nggak kepikiran, kenapa Laravel terasa begitu membantu saat kita harus berurusan sama skema database yang berubah-ubah tiap minggu? Saya sering banget ngerasain fase di mana fitur baru minta field baru, dan kalau cuma ngandalin manual query di PHPMyAdmin, pasti bakal berakhir jadi bencana pas mau deploy ke server production. Migration di Laravel itu ibarat 'version control' buat struktur database kita, jadi nggak ada lagi drama lupa nambahin kolom atau beda struktur antar environment.
Tips & Best Practices
- Di banyak project, biasanya saya mulai dari penamaan file yang deskriptif. Jangan cuma
create_users_table, tapi coba lebih spesifik kayakadd_phone_number_to_users_tablesupaya pas liat history-nya, kita langsung paham itu migration buat apa. - Saat ngerjain kolaborasi tim, saya selalu saranin buat ngerjain migration kecil-kecil per fitur. Jangan tumpuk perubahan database di satu file raksasa karena bakal bikin pusing pas terjadi conflict di Git.
- Biasanya saya selalu manfaatin method
down()secara serius. Banyak developer yang cuek, tapi pas butuhphp artisan migrate:rollback, kita bakal bersyukur banget udah nulis logic undo yang bener.
Contoh Kode
Pas lagi butuh nambahin tabel baru untuk sistem transaksi, saya biasanya jalankan php artisan make:migration create_orders_table. Struktur kodenya bakal kelihatan kayak gini:
public function up()
{
Schema::create('orders', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained();
$table->decimal('amount', 10, 2);
$table->string('status')->default('pending');
$table->timestamps();
});
}Variasi Implementasi
Kadang kita harus milih antara bikin migration baru untuk nambah kolom atau edit migration lama. Kalau migration-nya belum pernah di-push ke server production, saya biasanya edit aja biar history-nya rapi. Tapi kalau udah di-deploy, wajib hukumnya buat migration baru pakai php artisan make:migration add_new_column_to_table supaya database environment lain bisa sinkron dengan perubahan tersebut.
Kesalahan Umum
- Lupa jalanin perintah
migratedi server production setelah narik code terbaru, akhirnya dapet error 'Table not found'. - Nulis raw SQL di dalam migration, padahal Laravel udah nyediain Schema Builder yang lebih aman dan fleksibel.
- Salah ketik nama tabel di file migration, yang bikin skema database jadi berantakan dan susah di-trace.
- Kehilangan data penting karena asal hapus kolom di method
down()tanpa mikirin dampaknya ke data existing. - Nggak pernah ngetes rollback, padahal ini penyelamat nyawa kalau ternyata ada typo atau error logic pas lagi deploy.
Ringkasan
Intinya, migration itu bukan sekadar cara bikin tabel, tapi cara kita menjaga kesehatan database seiring tumbuhnya aplikasi. Dengan kedisiplinan nulis migration yang terstruktur, kita nggak cuma ngebantu diri sendiri, tapi juga bikin hidup tim jadi jauh lebih tenang. Happy coding, semoga database-nya tetap aman ya!
Komentar
Posting Komentar