Pada awal kami bekerja secara tim untuk menggarap proyek web dengan Laravel, ada satu kejadian yang benar-benar
menyebabkan stres dan membuat mood koding hancur yaitu masalah skema database yang saling bentrok.
Pada saat itu kami belum benar-benar memahami cara memanfaatkan fitur Migrasi Laravel. Berikut adalah pengalaman
nyata kami, masalah yang terjadi, dan bagaimana migrasi membantu tim kami.
Tragedi "Proyek Berhasil di Komputerku, Tapi Error di Komputer Teman"
Jika saya membuat perubahan pada struktur tabel, seperti menambah kolom status_pembayaran ke tabel pembelian,
tindakan yang saya lakukan sebelumnya adalah:
- Buka phpMyAdmin di laptop pribadi Anda.
- Tabel harus diubah secara manual.
- Keluarkan file.sql baru dan kirimkannya ke grup WhatsApp/Slack tim.
- Database tersebut harus diimport ulang ke laptop rekan kerja saya.
Apa hasilnya? kekacauan total
Saat teman saya membuat fitur baru dan mengubah tipe data kolom user_id, saya
juga menambah tabel baru. Aplikasi crash dengan cepat setelah kode digabungkan di Git. Banyak error, seperti
column unknown atau table, sudah ada.
Bukannya menambah fitur aplikasi, kami membutuhkan tiga jam untuk menyamakan
struktur database.
Solusi: Serahkan Urusan Database ke
Migrasi Laravel
Setelah kami menjadi marah, kami menyadari bahwa manual itu sangat kuno. Kami
mulai mewajibkan penggunaan Migrasi Laravel. Dengan kata lain,
migrasi adalah kontrol versi (seperti Git) khusus untuk database Anda. Tidak perlu mengirim file.sql, kami hanya perlu menuliskan struktur tabel
melalui kode PHP di folder database /migrations/.
1. Membuat Migrasi Baru
Saya hanya perlu menjalankan phpMyAdmin ketika saya perlu membuat tabel
posting. Saya tinggal jalankan perintah ini di terminal:
php artisan make:migration create_posts_table
Laravel akan membuat file khusus yang memiliki stempel waktu. Saya hanya perlu mengisi strukturnya dalam file ini:
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->enum('status', ['draft', 'published'])->default('draft');
$table->timestamps();
});
}
2. Gunakan Git untuk Berbagi Kode
Saya hanya perlu melakukan git commit dan push file migration ke repository tim setelah selesai.
3. Satu Perintah Cukup Untuk Satu Teman Tim
Setelah file migrasi tiba di laptopnya, teman saya hanya perlu mengetik satu perintah rahasia di terminal:
php artisan migrate
BOOM! Database di laptop teman saya secara otomatis ter-update dengan tabel posting yang persis sama seperti yang saya miliki, tanpa perlu menggunakan phpMyAdmin.
3 Aturan Migrasi Emas untuk Pemula: Mengambil Pelajaran dari Kesalahan Kami
Jika Anda bekerja dalam tim, ikuti tiga aturan ini untuk menghindari
pusing yang sama seperti kami:
- Tidak boleh mengedit tabel secara manual di phpMyAdmin. Buat atau
ubah tabel hanya dengan menggunakan file migration. Teman tim Anda tidak akan pernah tahu jika Anda
melakukan perubahan manual di phpMyAdmin.
- Jangan Pernah Mengubah File Migrasi yang Sudah di-Push: Jika file migrasi telah masuk ke Git dan dijalankan oleh teman timmu, jangan edit file lama itu. Sebaliknya, buat file migrasi baru untuk mengubah atau menambah kolom, seperti dengan menggunakan kode php artisan make:migration add_avatar_to_users_table.
- Saat terdesak, gunakan perintah php artisan migrate:fresh --seed. Ini akan menghapus semua tabel dan membangun ulang dari awal berdasarkan urutan file migrasi plus mengisi data dummy secara otomatis.
Fitur komentar belum diaktifkan oleh administrator.