Laravel 13 Pemula #5: Membuat Catatan Ajaib (Migration) – Tabel Categories

Tutorial Laravel 13 Pemula • Proyek Web Berita

#5: Membuat Catatan Ajaib (Migration) – Tabel Categories

Halo, Penyihir Database! 🧙‍♂️

Sekarang kita sudah punya database situs_berita dan Laravel sudah terhubung. Saatnya membuat tabel pertama kita: categories (kategori berita). Di Laravel, kita tidak membuat tabel langsung di MySQL dengan mengetik SQL. Kita menggunakan migration, yaitu sebuah "catatan ajaib" yang bisa kita jalankan kapan saja untuk membuat atau mengubah struktur tabel. Kerennya, migration ini bisa dibagikan ke teman dan dijalankan di komputernya juga.

🎯 Tujuan Kita:
  1. Membuat file migration untuk tabel categories.
  2. Mengisi migration dengan kolom-kolom yang dibutuhkan (id, name, slug, timestamps).
  3. Menjalankan migration sehingga tabel benar-benar tercipta di database.
  4. Memeriksa hasilnya menggunakan HeidiSQL.

Apa Itu Migration?

Bayangkan migration adalah cetakan kue yang berisi resep bentuk kue (struktur tabel). Ketika kita jalankan perintah migrate, Laravel akan "memanggang" cetakan itu menjadi tabel sungguhan di database. Jika suatu saat kita ingin mengubah bentuk tabel (misalnya menambah kolom), kita tidak perlu mengubah tabel langsung, cukup buat migration baru. Dengan migration, semua perubahan struktur data terdokumentasi dan bisa di-rollback (dibalikkan) dengan mudah.

Langkah 1: Membuat File Migration

✨ Perintah Artisan untuk Membuat Migration

Buka terminal Laragon (klik kanan ikon Laragon → Terminal). Pastikan kamu berada di folder proyek situs-berita. Jika belum, ketik:

cd situs-berita

Kemudian jalankan perintah ini:

php artisan make:migration create_categories_table

Perintah ini menyuruh Laravel membuat file migration baru dengan nama create_categories_table. Laravel akan otomatis membuat file di folder database/migrations/ dengan nama yang berisi timestamp (waktu) di depannya, seperti 2025_03_26_123456_create_categories_table.php.

💡 Tips Penamaan: Biasanya kita memberi nama migration dengan awalan create_namatable jika untuk membuat tabel baru, atau add_column_to_namatable jika ingin menambah kolom. Sangat membantu untuk dokumentasi.

Langkah 2: Mengisi Migration dengan Struktur Tabel

📋 Menentukan Kolom-Kolom untuk Kategori

Sekarang buka file migration yang baru dibuat. Kamu bisa menggunakan editor teks (VS Code, Sublime, atau Notepad). File tersebut akan berisi kode PHP dengan dua method: up() (untuk membuat tabel) dan down() (untuk menghapus tabel).

Ubah isi method up() sehingga menjadi seperti berikut:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::create('categories', function (Blueprint $table) {
            $table->id();                 // Kolom id (auto-increment)
            $table->string('name');       // Nama kategori (contoh: "Teknologi")
            $table->string('slug')->unique(); // Slug untuk URL (contoh: "teknologi")
            $table->timestamps();         // created_at dan updated_at
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('categories');
    }
};

Simpan file tersebut.

📌 Penjelasan Kolom:
  • $table->id() → Membuat kolom id dengan tipe big integer, auto-increment, dan primary key.
  • $table->string('name') → Kolom untuk nama kategori, tipe VARCHAR (255).
  • $table->string('slug')->unique() → Kolom slug (URL-friendly), misal "olahraga" untuk kategori Olahraga. Kita tambahkan unique() agar tidak ada slug yang sama.
  • $table->timestamps() → Membuat dua kolom: created_at dan updated_at yang otomatis diisi waktu saat data dibuat atau diubah.

Langkah 3: Menjalankan Migration (Memanggang Cetakan)

🏃 php artisan migrate

Setelah migration siap, kita jalankan perintah berikut di terminal (pastikan masih di folder proyek):

php artisan migrate

Kamu akan melihat output seperti ini:

Migration table created successfully.
Migrating: 2025_03_26_123456_create_categories_table
Migrated:  2025_03_26_123456_create_categories_table

Artinya migration berhasil dijalankan dan tabel categories sudah terbuat di database.

💡 Pertama Kali Migrate: Saat pertama kali menjalankan php artisan migrate, Laravel juga akan membuat tabel migrations untuk mencatat migration mana saja yang sudah dijalankan. Ini berguna agar migration tidak dijalankan ulang.

Langkah 4: Memeriksa Tabel dengan HeidiSQL

👀 Lihat Hasil Karya di Database

Mari kita lihat apakah tabel categories sudah benar-benar ada di database:

  1. Klik kanan ikon Laragon → Database → HeidiSQL.
  2. Klik Open (dengan user root).
  3. Di panel kiri, pilih database situs_berita.
  4. Perluas dan lihat bagian "Tables". Harusnya ada tabel categories dan juga tabel migrations (yang dibuat otomatis oleh Laravel).
  5. Klik tabel categories lalu lihat "Columns" untuk melihat kolom-kolom yang sudah kita definisikan: id, name, slug, created_at, updated_at.

Selamat! Tabel kategori sudah siap digunakan. 🎉

Langkah Bonus: Mencoba Mengisi Data Kategori Pertama (Manual via HeidiSQL)

Kita belum punya form input untuk kategori, tapi kita bisa coba memasukkan data manual dulu untuk memastikan tabel bekerja. Caranya:

  1. Di HeidiSQL, pilih tabel categories.
  2. Klik tab "Data".
  3. Klik "Insert" (atau ikon tambah).
  4. Isi kolom name dengan "Teknologi", slug dengan "teknologi". Kolom timestamps akan diisi otomatis nanti jika kita tidak isi, tapi Laravel biasanya mengisi otomatis saat kita pakai model. Untuk tes, kamu bisa isi created_at dengan NOW().
  5. Klik "Save".
  6. Coba tambah satu lagi: "Olahraga" dengan slug "olahraga".

Nanti di tutorial berikutnya, kita akan membuat form untuk mengelola kategori langsung dari website (CRUD).

⚠️ Apa yang Harus Dilakukan Jika Salah?

Jika kamu salah menulis kolom di migration dan ingin memperbaikinya, jangan panik. Ada dua cara:

  • Rollback dan Migrate Ulang: Jalankan php artisan migrate:rollback untuk membatalkan migration terakhir, lalu edit file migration, lalu jalankan php artisan migrate lagi.
  • Buat Migration Baru: Gunakan php artisan make:migration add_column_to_categories_table untuk menambah kolom tanpa merusak data yang sudah ada.

Kita akan bahas lebih lanjut di tutorial mendatang jika diperlukan.

✅ Ringkasan Hari Ini

  • ✅ Kita belajar bahwa migration adalah "cetakan" untuk membuat tabel database.
  • ✅ Kita membuat migration create_categories_table dengan kolom id, name, slug, dan timestamps.
  • ✅ Kita menjalankan php artisan migrate dan tabel categories tercipta.
  • ✅ Kita lihat hasilnya di HeidiSQL.

Langkah selanjutnya: kita akan membuat model untuk kategori dan mulai membuat halaman CRUD (Create, Read, Update, Delete) untuk mengelola kategori dari website. Menyenangkan, kan?

🌟 Semangat! Kamu baru saja membuat tabel database pertama dengan migration. Ini adalah fondasi dari semua fitur yang akan kita buat. Besok kita akan membuat model dan controller!

📝 Seri Tutorial Laravel 13 Pemula – Proyek Web Berita
✨ Selanjutnya: #6: Membuat Jalan Tol (Routing) – Menghubungkan URL dengan Halaman

Lebih baru Lebih lama

نموذج الاتصال