🎯 Tujuan Pembelajaran

Pada akhir pertemuan ini, mahasiswa mampu:

  • Memahami konsep database, migration, dan manfaatnya.
  • Menghubungkan Laravel ke database menggunakan file .env.
  • Membuat tabel menggunakan Laravel Migration.
  • Menjalankan perintah migration untuk membuat struktur tabel.
  • Memahami struktur folder penting terkait database.
  • Mengatasi error yang sering muncul saat migrasi.

1. Konsep Dasar: Apa Itu Migration?

Migration adalah fitur Laravel untuk mengatur struktur database menggunakan kode, bukan secara manual lewat phpMyAdmin.

🔑 Migration seperti version control (Git) untuk database.

Dengan migration, kita bisa:

✔ Membuat tabel
✔ Mengubah tabel
✔ Menambah kolom
✔ Rollback perubahan
✔ Sinkron database di semua komputer tim

Contoh situasi nyata:

Saat bekerja dalam tim, semua developer harus memiliki struktur tabel yang sama. Migration memastikan hal itu tanpa perlu mengirim file .sql manual.


2. Struktur Dasar Migration

Setiap migration memiliki dua fungsi utama:

up()

Berisi kode untuk membuat atau mengubah tabel.

down()

Berisi kebalikan dari up(), biasanya untuk menghapus tabel. Digunakan saat rollback.

Contoh migration:

public function up(): void
{
    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->decimal('price', 10, 2);
        $table->text('description')->nullable();
        $table->integer('stock')->nullable();
        $table->string('image')->nullable();
        $table->timestamps();
    });
}

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

3. Membuat Database di Laragon

Cara 1: phpMyAdmin
crud_produk_db
Cara 2: Terminal MySQL
mysql -u root -p

Lalu jalankan:

CREATE DATABASE crud_produk_db;
SHOW DATABASES;

4. Menghubungkan Laravel ke Database

Edit file .env:

DB_DATABASE=crud_produk_db
DB_USERNAME=root
DB_PASSWORD=

Jika masih tidak terbaca, jalankan:

php artisan config:clear

5. Membuat Migration Tabel Produk

Buat migration:

php artisan make:migration create_products_table --create=products

Edit file migration:

public function up(): void
{
    Schema::create('products', function (Blueprint $table) {
        $table->id();                             
        $table->string('name');                
        $table->decimal('price', 10, 2);       
        $table->text('description')->nullable(); 
        $table->integer('stock')->nullable(); 
        $table->string('image')->nullable();  
        $table->timestamps();                     
    });
}

📸 Penulisan skema database:


6. Menjalankan Migration

Jalankan:

php artisan migrate

Jika berhasil, tabel akan muncul di database.

📸 Cek phpMyAdmin:

📸 Detail tabel products:

📸 Cek via terminal:


7. Struktur Folder Penting Laravel

project-laravel/
├── 📁 app/
├── 📁 bootstrap/
├── 📁 config/
├── 📁 database/
│   └── 📁 migrations/
│       └── [timestamp]_create_products_table.php
├── 📁 public/
├── 📁 resources/
├── 📁 routes/
├── 📁 storage/
├── 📁 tests/
└── 📁 vendor/

⚠️ 8. Error yang Sering Terjadi & Solusinya

❌ Access denied for user 'root'

Cek kembali konfigurasi .env.

❌ Base table already exists

Gunakan:

php artisan migrate:refresh
❌ Connection refused

Pastikan MySQL di Laragon sedang berjalan.

❌ Column not found

Lakukan fresh:

php artisan migrate:fresh

9. Perintah Tambahan Migration (Wajib Diketahui Mahasiswa)

Rollback 1 langkah:
php artisan migrate:rollback
Refresh (hapus tabel & buat ulang):
php artisan migrate:refresh
Fresh (hapus semua tabel, buat ulang dari awal):
php artisan migrate:fresh

10. Studi Kasus: Penerapan di Aplikasi

Pada aplikasi katalog produk, migration memastikan seluruh tim/developer memiliki struktur tabel yang sama tanpa perlu export/import SQL. Cukup pull project → migrate → database siap digunakan.