Model & Eloquent ORM Dasar di Laravel 13
Halo bos! Selamat datang di Artikel 7 Belajar Laravel 13.
Di Artikel 6 kita sudah berhasil membuat tabel categories dan posts lewat Migration. Sekarang kita akan belajar cara berinteraksi dengan tabel tersebut menggunakan Eloquent ORM.
Eloquent adalah salah satu fitur paling powerful di Laravel. Dengan Eloquent, kita tidak perlu menulis query SQL mentah. Kita cukup menggunakan Model.
Apa Itu Model & Eloquent?
- Model = representasi satu tabel di database.
- Eloquent = sistem yang membuat kita bisa berinteraksi dengan database menggunakan cara yang sangat mirip dengan object biasa di PHP.
Contohnya:
- Tabel posts → Model Post
- Tabel categories → Model Category
Dengan Model, kita bisa dengan mudah:
- Mengambil data
- Menyimpan data baru
- Mengubah data
- Menghapus data
- Mengatur relasi antar tabel
Langkah 1: Membuat Model Category dan Post
Jalankan kedua perintah ini di terminal:
Laravel akan membuat dua file:
Langkah 2: Mengisi Model Category
Buka file app/Models/Category.php, lalu ganti isinya menjadi:
Penjelasan singkat:
- $fillable → daftar kolom yang boleh diisi sekaligus (penting untuk keamanan)
- Method posts() → mendefinisikan relasi hasMany (satu kategori punya banyak post)
Langkah 3: Mengisi Model Post
Buka file app/Models/Post.php, lalu ganti isinya menjadi:
Penjelasan:
- Method category() → relasi belongsTo (setiap post milik satu kategori)
Langkah 4: Memahami Mass Assignment
Laravel secara default melindungi model dari pengisian massal yang berbahaya (Mass Assignment Protection).
Itulah kenapa kita wajib mendefinisikan $fillable.
Kalau kita tidak menuliskan kolom di $fillable, maka kolom tersebut tidak akan bisa diisi lewat method create() atau update().
Catatan Laravel 13:
Sekarang Laravel juga mendukung cara baru memakai PHP Attribute:
Keduanya valid. Untuk pemula, $fillable masih lebih mudah dipahami.
Langkah 5: Mencoba Eloquent lewat Tinker
Sekarang kita coba langsung berinteraksi dengan database menggunakan Tinker.
Jalankan:
1. Membuat Kategori Baru
Kalau berhasil, Tinker akan menampilkan object Category yang baru dibuat.
2. Membuat Post Baru
3. Mengambil Semua Data
4. Mengambil Satu Data Berdasarkan ID
5. Menggunakan Relasi
6. Update Data
7. Hapus Data
Ketik exit untuk keluar dari Tinker.
Ringkasan Relasi yang Kita Pakai
Ini adalah relasi One to Many yang paling sering dipakai di aplikasi blog.
Tips Penting
- Selalu isi $fillable (atau pakai #[Fillable]) agar mass assignment aman.
- Gunakan with() untuk eager loading supaya menghindari masalah N+1 query.
- findOrFail() lebih aman daripada find() karena otomatis melempar 404 kalau data tidak ditemukan.
- Method relasi sebaiknya diberi return type (: HasMany, : BelongsTo) agar lebih jelas dan modern.
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
Migration Dasar — Membuat Tabel Posts dan Categories
Sampai episode ini kita belum punya tabel posts atau categories sama sekali — controller kita masih mengembalikan teks placeholder. Saatnya bikin struktur database sungguhan lewat migration
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