Pluginify

Masuk Daftar
Home > Blog > Laravel > Migration Database di Laravel — Fondasi Struktur Database yang Rapi

Migration Database di Laravel — Fondasi Struktur Database yang Rapi

Migration Database di Laravel — Fondasi Struktur Database yang Rapi

Dalam pengembangan aplikasi, struktur database adalah pondasi penting yang harus dijaga dengan rapi, terdokumentasi, dan konsisten di setiap lingkungan (local, staging, production). Laravel menyediakan fitur Migration untuk menjembatani hal tersebut.

Melalui migration, developer tidak perlu lagi membuat tabel secara manual via phpMyAdmin atau CLI SQL. Semua perubahan struktur database (create, alter, drop) dicatat dalam file versi yang bisa dieksekusi, di-rollback, dan dibagikan ke tim.

🎯 Apa Itu Migration?

Migration adalah version control untuk struktur database.

Artinya:

  • Pembuatan tabel bisa dicatat.
  • Perubahan kolom bisa dicatat.
  • Pengecilan atau penghapusan tabel juga dicatat.
  • Bisa otomatis diterapkan ke semua environment.

Bayangkan migration seperti git commit, tapi untuk database.


⚙️ Cara Membuat Migration

Laravel menyediakan artisan command untuk membuat migration.

Contoh membuat migration tabel products:

php artisan make:migration create_products_table

Perintah ini akan membuat file .php di folder:

database/migrations/

Nama file biasanya seperti:

2026_01_14_123456_create_products_table.php

📝 Struktur File Migration

File migration memiliki dua metode utama:

public function up()
{
    // Perubahan struktur saat migrate
}

public function down()
{
    // Rollback perubahan
}

Contoh isi create_products_table.php:

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('name', 120);
        $table->integer('stock')->default(0);
        $table->decimal('price', 10, 2);
        $table->timestamps();
    });
}

public function down()
{
    Schema::dropIfExists('products');
}

🚀 Menjalankan Migration

Jalankan semua migration dengan command:

php artisan migrate

Jika berhasil, Laravel akan:

✔ Membuat tabel baru

✔ Menyimpan catatan di migrations table

✔ Tidak menjalankan ulang migration yang sudah tercatat

Rollback Migration

Kadang kita butuh undo (kembali ke struktur sebelumnya):

1) Rollback step terakhir:

php artisan migrate:rollback

2) Reset semua:

php artisan migrate:reset

3) Fresh (drop semua tabel + migrate lagi):

php artisan migrate:fresh

Umum dipakai saat development.


🔧 Menambah Kolom Baru di Tabel Existing

Misal ingin menambah kolom weight ke tabel products:

php artisan make:migration add_weight_to_products_table

Isi migrasi:

public function up()
{
    Schema::table('products', function (Blueprint $table) {
        $table->integer('weight')->nullable();
    });
}

public function down()
{
    Schema::table('products', function (Blueprint $table) {
        $table->dropColumn('weight');
    });
}

🧼 Mengubah & Menghapus Kolom

➤ Mengubah kolom (butuh Doctrine DBAL):

Install dulu:

composer require doctrine/dbal

Contoh ubah tipe price jadi nullable:

$table->decimal('price', 10, 2)->nullable()->change();

➤ Menghapus kolom:

$table->dropColumn('stock');

Fitur Ekstra yang Sering Dipakai

Laravel menyediakan fitur siap pakai seperti:

KolomKeteranganid()Kolom primary auto incrementtimestamps()Kolom created_at & updated_atsoftDeletes()Kolom deleted_at untuk soft deletenullable()Kolom boleh kosongdefault()Nilai default

Contoh lengkap:

$table->string('status')->default('pending');
$table->softDeletes();

👥 Migration untuk Relasi

Eloquent mendukung foreign key:

$table->foreignId('user_id')->constrained()->cascadeOnDelete();

Di atas artinya:

  • user_id mengacu ke tabel users
  • Hapus user → hapus data terkait

🗃 Kenapa Harus Pakai Migration?

Beberapa manfaat utama:

Terasa seperti version control database

Tidak perlu klik-klik di phpMyAdmin

Memudahkan deploy ke server

Menjaga konsistensi tim

Membuat rollback cepat

Terintegrasi dengan Seeder & Factory

📌 Kesimpulan

Migration database adalah fitur penting di Laravel untuk:

  • Mengatur struktur database
  • Mengelola perubahan kolom
  • Membuat versioning schema
  • Menjamin konsistensi antar environment

Jika kamu membangun aplikasi skala kecil hingga besar, migration adalah best practice yang wajib diterapkan.

Next Baca Juga: Seeder Factory Laravel

Pluginify
Pluginify