laravel migration database | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: laravel migration database

Saturday, April 11, 2026

laravel migration database

🗄️
📚 SERI BELAJAR LARAVEL — ARTIKEL 11 DARI 50

Migration:
Cara Membuat & Mengelola Tabel Database

Pelajari cara kerja Migration di Laravel — dari membuat tabel baru, mengubah struktur, hingga rollback database. Tidak perlu lagi utak-atik phpMyAdmin manual!

#Migration #Database Schema #Laravel Artisan #PHP
⏱️ 9 menit baca
🎯 Level: Pemula
📅 Update: 2025
🔥 Laravel 11.x

Pernah kerja bareng tim, dan tiba-tiba database di laptopmu beda struktur sama punya teman satu tim? Atau pernah takut salah ubah tabel di server production sampai data hilang? Nah, itulah masalah nyata yang dialami developer sebelum mengenal Migration. Di seri 50 Artikel Belajar Laravel ini — tepatnya artikel ke-11 — kita akan bahas tuntas fitur Migration di Laravel yang bakal bikin pengelolaan database-mu jauh lebih terstruktur, aman, dan bisa di-version control. Sama seperti kamu sudah belajar routing Laravel di artikel-artikel sebelumnya, Migration ini adalah fondasi yang wajib kamu kuasai sebelum membangun aplikasi serius.

🧠 Definisi Utama

Migration di Laravel adalah sistem version control untuk database. Ia memungkinkan kamu mendefinisikan struktur tabel (nama kolom, tipe data, index) menggunakan kode PHP — bukan SQL mentah. Setiap perubahan skema database dicatat sebagai file migration yang bisa dijalankan, di-rollback, atau dibagikan ke anggota tim dengan mudah.

🗂️ Apa Itu Migration dan Mengapa Kamu Butuh Ini?

Bayangkan proyek aplikasimu adalah sebuah bangunan gedung bertingkat. Setiap lantai baru yang kamu tambahkan adalah perubahan database — kolom baru, tabel baru, atau modifikasi struktur. Tanpa Migration, kamu hanya bisa "ingat-ingat sendiri" perubahan apa yang sudah dilakukan. Kalau ada anggota tim baru bergabung, mereka harus menebak sendiri struktur database yang benar.

Dengan Migration, setiap perubahan terdokumentasi rapi dalam file PHP yang bisa dieksekusi kapan saja. Jalankan satu perintah Artisan, dan database siapa pun di tim akan langsung sinkron. Bayangkan betapa nyamannya!

🔥

Fakta Menarik

Laravel sudah menyertakan beberapa file migration bawaan saat project pertama kali dibuat — termasuk migration untuk tabel users, password_reset_tokens, dan failed_jobs. Kamu tidak perlu buat dari nol untuk fitur autentikasi dasar!

📊 Tanpa Migration vs Dengan Migration

❌ Tanpa Migration

  • Ubah database manual via phpMyAdmin
  • Tim sering tidak sinkron strukturnya
  • Tidak bisa rollback kalau salah
  • Tidak ada catatan riwayat perubahan
  • Deploy ke server = pusing sendiri

✅ Dengan Migration

  • Definisikan tabel lewat kode PHP
  • Satu perintah, semua sinkron
  • Rollback semudah satu perintah
  • Riwayat lengkap tersimpan di Git
  • Deploy lancar tanpa drama

⚡ Cara Membuat Migration di Laravel: Langkah demi Langkah

Seperti halnya saat kamu mendefinisikan routing Laravel di file routes/web.php, Migration juga punya file tersendiri yang disimpan di folder database/migrations/. Mari kita buat migration pertama kita dari awal.

1

Konfigurasi koneksi database dulu

Sebelum menjalankan migration, pastikan file .env sudah dikonfigurasi dengan benar untuk koneksi database:

# File .env di root project Laravel
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database_kamu
DB_USERNAME=root
DB_PASSWORD=password_kamu
2

Buat file migration baru dengan Artisan

Gunakan perintah make:migration di terminal. Laravel otomatis memberi nama file dengan timestamp agar urutan eksekusi terjaga.

# Buat migration untuk tabel baru
php artisan make:migration create_products_table

# Buat migration + update tabel yang sudah ada
php artisan make:migration add_stock_to_products_table --table=products
3

Edit file migration yang terbentuk

Buka file yang baru dibuat di folder database/migrations/. Kamu akan melihat dua method utama: up() untuk membuat/mengubah, dan down() untuk rollback.

..._create_products_table.php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration {

  public function up(): void
  {
    Schema::create('products', function (Blueprint $table) {
      $table->id();
      $table->string('name');
      $table->text('description')->nullable();
      $table->decimal('price', 10, 2);
      $table->integer('stock')->default(0);
      $table->timestamps(); // created_at & updated_at otomatis!
    });
  }

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

Jalankan migration ke database

Satu perintah ini akan membaca semua file migration yang belum dieksekusi dan menjalankannya secara berurutan:

# Jalankan semua migration yang belum dieksekusi
php artisan migrate

# Output yang akan kamu lihat:
 INFO  Running migrations.
  ✓ database/migrations/..._create_products_table.php 14ms DONE
💡

Tips Penamaan Migration

Gunakan konvensi nama yang deskriptif dan konsisten: create_[nama_tabel]_table untuk membuat tabel baru, dan add_[kolom]_to_[tabel]_table untuk menambah kolom. Laravel juga bisa mendeteksi intent dari nama ini dan otomatis mengisi kode stub yang sesuai!

🔧 Tipe Kolom, Modifier, dan Cara Rollback Migration

Blueprint di Laravel menyediakan puluhan metode untuk mendefinisikan berbagai tipe kolom database. Memahami pilihan ini sangat penting agar kamu bisa merancang skema database yang efisien dan tepat. Berikut referensi tipe kolom yang paling sering dipakai:

Method Blueprint Tipe SQL Kegunaan Umum
id() BIGINT UNSIGNED AUTO_INCREMENT Primary key standar
string('col', 100) VARCHAR(100) Nama, email, judul
text('col') TEXT Deskripsi, konten artikel
integer('col') INT Stok, jumlah, umur
decimal('col', 10, 2) DECIMAL(10,2) Harga, nilai desimal
boolean('col') TINYINT(1) Status aktif, is_published
timestamp('col') TIMESTAMP Tanggal/waktu spesifik
foreignId('user_id') BIGINT UNSIGNED Foreign key ke tabel lain
timestamps() created_at + updated_at Timestamp otomatis (wajib pakai!)

Perintah-Perintah Penting Migration

Terminal — Artisan Migration Commands
# Jalankan semua migration pending
php artisan migrate

# Rollback migration terakhir (batalkan satu batch)
php artisan migrate:rollback

# Rollback SEMUA migration (database jadi kosong)
php artisan migrate:reset

# Rollback + jalankan ulang semua migration
php artisan migrate:refresh

# Refresh + jalankan seeder (data dummy)
php artisan migrate:fresh --seed

# Lihat status semua migration
php artisan migrate:status
⚠️

Perhatian: Jangan migrate:fresh di Production!

Perintah migrate:fresh akan menghapus semua tabel dan membuat ulang dari awal. Di environment development ini oke, tapi di server production itu bencana — data pengguna hilang semua! Selalu cek environment sebelum menjalankan perintah ini.

🚀 Tips Lanjutan Migration yang Wajib Kamu Tahu

Setelah kamu mahir dengan dasar-dasar migration, ada beberapa pola dan teknik yang akan meningkatkan kualitas kode database-mu ke level berikutnya. Ini juga relevan banget saat kamu mulai membangun relasi antar tabel di Laravel — yang sering berjalan beriringan dengan konfigurasi routing Laravel untuk fitur-fitur CRUD.

A

Mendefinisikan Foreign Key dengan Cara yang Elegan

Laravel 8+ menyediakan cara ringkas untuk mendefinisikan foreign key yang sekaligus menambahkan constraint relasional:

$table->foreignId('user_id')
    ->constrained() // auto-reference ke tabel users
    ->onDelete('cascade'); // hapus post jika user dihapus
B

Modifikasi Kolom yang Sudah Ada

Perlu mengubah tipe kolom atau menambah kolom baru di tabel yang sudah ada? Buat migration baru, jangan edit yang lama!

// Migration: add_category_to_products_table
public function up(): void
{
  Schema::table('products', function (Blueprint $table) {
    $table->string('category')->nullable()->after('name');
  });
}

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

Insight Penting: Jangan Edit Migration Lama!

Prinsip emas Migration: migration yang sudah dijalankan tidak boleh diedit. Kalau kamu perlu perubahan, selalu buat file migration baru. Mengapa? Karena anggota tim lain (atau server production) sudah menjalankan migration lama tersebut. Mengeditnya akan membuat status migration tidak konsisten dan bisa menyebabkan error yang susah dilacak.

🗄️
KESIMPULAN

Migration: Fondasi Database yang Tak Boleh Dilewati

Di artikel ke-11 seri 50 Artikel Belajar Laravel ini, kita telah menjelajahi:

  • Konsep dan manfaat Migration sebagai version control untuk database
  • Cara membuat dan menjalankan file migration dengan Artisan
  • Berbagai tipe kolom Blueprint yang bisa kamu gunakan
  • Perintah penting: migrate, rollback, refresh, dan fresh
  • Best practice migration yang berjalan selaras dengan routing Laravel di sisi aplikasi

Migration bukan sekadar fitur opsional — ini adalah kebiasaan profesional. Mulai sekarang, setiap kali kamu mendefinisikan struktur tabel baru, lakukan lewat Migration. Artikel selanjutnya, kita akan belajar cara mengisi database dengan data uji coba menggunakan Seeder dan Factory. Semakin seru!

#Laravel #Migration #Database #BelajarLaravel #RoutingLaravel #PHP #Artisan #Tutorial

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux