Migration Dasar — Membuat Tabel Posts dan Categories
Halo bos! Selamat datang di Artikel 6 Belajar Laravel 13.
Ini adalah bagian yang sangat penting. Mulai dari sini, project blog-sederhana kita akan punya struktur database sungguhan.
Kita akan membuat dua tabel utama:
- categories → untuk kategori post (Contoh: Teknologi, Lifestyle, Tutorial)
- posts → untuk menyimpan artikel blog
Tabel posts akan berelasi ke categories (satu kategori bisa punya banyak post).
Apa Itu Migration?
Migration adalah cara Laravel mengelola struktur database.
Bayangkan seperti version control (mirip Git), tapi khusus untuk database.
Keuntungan memakai Migration:
- Struktur database tercatat di kode
- Mudah dijalankan di komputer lain / server
- Bisa di-rollback kalau ada kesalahan
- Tim development tetap sinkron
Semua file migration ada di folder:
Langkah 1: Buat Migration Tabel Categories
Jalankan perintah ini di terminal:
Laravel akan membuat file baru di database/migrations/ dengan nama mirip:
Buka file tersebut, lalu ganti isinya menjadi:
Penjelasan kolom:
Langkah 2: Buat Migration Tabel Posts
Jalankan perintah:
Buka file yang baru dibuat, lalu ganti isinya menjadi:
Penjelasan penting:
- foreignId('category_id')->constrained()->cascadeOnDelete()
- Membuat kolom category_id
- Menghubungkan ke tabel categories
- Kalau kategori dihapus, semua post di dalamnya ikut terhapus (cascadeOnDelete)
- slug dibuat unique supaya URL tidak bentrok
- excerpt → ringkasan singkat (boleh kosong)
- body → isi lengkap artikel
- thumbnail → nama file gambar (nanti kita pakai di artikel upload)
- published_at → kapan post dipublish (boleh null = masih draft)
Langkah 3: Jalankan Migration
Pastikan database sudah terhubung (dari Artikel 2), lalu jalankan:
Kalau berhasil, kamu akan melihat output seperti:
Langkah 4: Cek Hasilnya
Ada beberapa cara untuk memastikan tabel sudah dibuat:
Cara 1: Pakai perintah Artisan
atau lihat detail tabel:
Cara 2: Pakai Tinker
Lalu ketik:
Kalau hasilnya true, berarti berhasil.
Ketik exit untuk keluar dari Tinker.
Langkah 5: Memahami Urutan Migration
Laravel menjalankan migration berdasarkan timestamp di nama file.
Karena kita membuat categories dulu baru posts, urutannya sudah benar.
Kalau suatu saat kamu membuat migration yang saling bergantung, pastikan tabel yang dirujuk (parent) dibuat lebih dulu.
Langkah 6: Rollback (Kalau Ada Kesalahan)
Kalau kamu ingin mengembalikan migration terakhir:
Kalau ingin mengembalikan semua:
Lalu jalankan lagi:
Peringatan: Rollback akan menghapus data di tabel tersebut. Hati-hati kalau sudah ada data penting.
Ringkasan yang Sudah Kita Capai
Setelah mengikuti artikel ini, project kamu sekarang punya:
- Tabel categories
- Tabel posts
- Relasi foreign key antara posts dan categories
- Struktur database yang sudah rapi dan siap dikembangkan
Tutorial terkait
Query Builder vs Eloquent — Kapan Pakai yang Mana?
Laravel sebenarnya punya dua lapisan untuk mengakses database: Query Builder (DB::table()) yang lebih rendah level, dan Eloquent (Post::query()) yang dibangun di atasnya
Model & Eloquent ORM Dasar di Laravel 13
Tabel sudah ada di database, tapi kalau mau query data, kita butuh cara yang lebih ekspresif daripada SQL mentah. Di sinilah Eloquent, ORM (Object-Relational Mapping) bawaan Laravel, berperan
Blade Templating Dasar — Layout, Include, dan Component
Sampai sekarang, setiap kali kita return teks dari Controller, hasilnya hanya teks polos. Tentu saja website sungguhan butuh HTML yang rapi: header, navbar, footer, dan konten yang berbeda di setiap halaman