laravel model eloquent orm | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: laravel model eloquent orm

Saturday, April 11, 2026

laravel model eloquent orm

📚 SERI BELAJAR LARAVEL — ARTIKEL 10 DARI 50

Model di Laravel:
Pengenalan Eloquent ORM

Belajar cara kerja Eloquent ORM di Laravel — dari konsep dasar Model, relasi antar tabel, hingga query yang elegan. Cocok banget buat kamu yang baru mulai eksplorasi framework Laravel!

#Eloquent ORM #Laravel Model #PHP #Database
⏱️ 8 menit baca
🎯 Level: Pemula
📅 Update: 2025
🔥 Laravel 11.x

Pernah nggak kamu nulis query SQL panjang kayak SELECT * FROM users WHERE id = 1 AND status = 'active' dan langsung pusing sendiri? Nah, di sinilah Laravel hadir sebagai penyelamat. Salah satu fitur paling keren dari Laravel adalah Eloquent ORM — sebuah sistem yang bikin kamu bisa berinteraksi dengan database layaknya ngobrol pakai bahasa Indonesia, bukan SQL yang kaku. Di artikel ke-10 dari seri 50 Artikel Belajar Laravel ini, kita akan bedah tuntas apa itu Model di Laravel, gimana cara kerjanya, dan kenapa Eloquent ORM bakal jadi sahabat terbaikmu dalam membangun aplikasi.

🧠 Definisi Utama

Eloquent ORM (Object-Relational Mapping) adalah fitur bawaan Laravel yang memungkinkan kamu berinteraksi dengan tabel database menggunakan class PHP (Model) — tanpa perlu menulis SQL secara manual. Setiap tabel database direpresentasikan oleh satu Model, dan setiap baris data di tabel menjadi satu objek (instance) dari Model tersebut.

🗂️ Apa Itu Model di Laravel?

Bayangkan database-mu adalah sebuah lemari arsip kantor. Setiap laci di lemari itu adalah tabel (misalnya: laci "Users", laci "Products"). Nah, Model di Laravel itu ibarat seorang petugas arsip yang super pintar — dia tahu persis laci mana yang harus dibuka, data apa yang harus diambil, dan bahkan bisa menyimpan atau mengubah data tanpa kamu perlu turun tangan langsung.

Di Laravel, setiap Model adalah sebuah class PHP yang extends dari Illuminate\Database\Eloquent\Model. Secara default, satu Model merepresentasikan satu tabel di database. Misalnya, Model User akan otomatis terhubung ke tabel users.

💡

Tips Konvensi Nama

Laravel menggunakan konvensi singular untuk nama Model dan plural untuk nama tabel. Jadi Model Product → tabel products. Model BlogPost → tabel blog_posts. Laravel yang ngurusinnya otomatis!

Cara Membuat Model di Laravel

1

Buka terminal dan jalankan perintah Artisan

Laravel punya CLI tool bernama Artisan yang mempercepat pekerjaan kita. Cukup satu baris perintah untuk membuat file Model baru.

# Buat Model saja
php artisan make:model Product

# Buat Model + Migration sekaligus (rekomendasi!)
php artisan make:model Product -m
2

Lihat file Model yang baru dibuat

File akan muncul di folder app/Models/Product.php. Inilah struktur dasarnya:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
  // Otomatis terhubung ke tabel 'products'
  protected $fillable = ['name', 'price', 'description'];
}
3

Pahami properti $fillable

Properti $fillable mendefinisikan kolom mana saja yang boleh diisi secara massal (mass assignment). Ini penting untuk keamanan aplikasimu dari serangan mass assignment vulnerability.

⚠️

Perhatian Penting!

Jangan pernah pakai $guarded = [] di production tanpa pertimbangan matang. Ini berarti semua kolom bisa diisi dari luar — potensi celah keamanan yang berbahaya. Selalu definisikan $fillable secara eksplisit!

⚡ Operasi CRUD dengan Eloquent ORM

Ini dia bagian yang paling bikin kamu jatuh cinta sama Eloquent. Bayangkan kamu punya tabel products di database. Dengan Eloquent, semua operasi CRUD (Create, Read, Update, Delete) bisa dilakukan dengan sintaks yang super bersih dan mudah dibaca, seperti ini:

ProductController.php
// ✅ CREATE — Tambah produk baru
Product::create([
  'name' => 'Laptop Gaming',
  'price' => 15000000,
  'description' => 'Laptop performa tinggi',
]);

// ✅ READ — Ambil semua produk
$products = Product::all();

// ✅ READ — Cari produk berdasarkan ID
$product = Product::find(1);

// ✅ READ — Query dengan kondisi
$expensive = Product::where('price', '>', 10000000)->get();

// ✅ UPDATE — Perbarui data produk
$product = Product::find(1);
$product->update(['price' => 12000000]);

// ✅ DELETE — Hapus produk
Product::find(1)->delete();

Insight Penting: find() vs findOrFail()

Gunakan findOrFail(1) daripada find(1) di production. Kalau data tidak ditemukan, find() mengembalikan null dan bisa menyebabkan error misterius. Sedangkan findOrFail() otomatis lempar exception 404. Lebih aman!

Tabel Metode Query Eloquent yang Paling Sering Dipakai

Metode Fungsi Return Type
all() Ambil semua data dari tabel Collection
find($id) Cari berdasarkan primary key Model atau null
findOrFail($id) Cari atau lempar 404 Model atau Exception
where()->get() Query dengan kondisi tertentu Collection
first() Ambil satu data pertama Model atau null
create([]) Buat dan simpan data baru Model
paginate($n) Ambil data dengan paginasi LengthAwarePaginator

🔗 Relasi Antar Model: Kekuatan Sesungguhnya Eloquent ORM

Kalau tadi kamu sudah paham operasi CRUD dasar, sekarang kita naik level. Kecanggihan Eloquent sesungguhnya ada di kemampuannya mengelola relasi antar tabel. Bayangkan seperti hubungan antar manusia — seorang User bisa punya banyak Post (one-to-many), dan satu Post dimiliki oleh satu User (belongs-to).

Di Laravel, relasi ini ditulis langsung di dalam class Model sebagai method, dan hasilnya bisa dipanggil semudah mengakses properti objek biasa.

User.php + Post.php
// Model User — satu user punya banyak post
class User extends Model {
  public function posts() {
    return $this->hasMany(Post::class);
  }
}

// Model Post — setiap post milik satu user
class Post extends Model {
  public function user() {
    return $this->belongsTo(User::class);
  }
}

// Cara memakainya — super intuitif!
$user = User::find(1);
$posts = $user->posts; // Langsung dapat semua post si user!
📊 Analisis: Jenis-Jenis Relasi di Eloquent

hasOne()

Satu-ke-satu
Contoh: User → Profile

hasMany()

Satu-ke-banyak
Contoh: User → Posts

belongsTo()

Kebalikan hasMany
Contoh: Post → User

belongsToMany()

Banyak-ke-banyak
Contoh: Post → Tags

🔥

Fakta Menarik: Eager Loading

Saat mengambil relasi, Eloquent default menggunakan lazy loading yang bisa menyebabkan masalah N+1 query — query yang berulang sebanyak jumlah data. Solusinya? Gunakan with('posts') untuk eager loading: User::with('posts')->get(). Ini mengambil semua data cukup dalam 2 query saja!

🏗️ Model dalam Arsitektur MVC Laravel

Kamu pasti ingat di artikel-artikel sebelumnya kita sudah belajar tentang routing laravel dan Controller. Nah, sekarang mari kita lihat bagaimana Model berteman dengan komponen-komponen itu dalam satu skenario nyata. Di arsitektur MVC (Model-View-Controller), alur kerjanya seperti ini:

1

Route menerima request dari browser

Routing laravel di routes/web.php menangkap URL dan meneruskan ke Controller yang sesuai.

2

Controller memanggil Model

Controller menggunakan Eloquent untuk mengambil data dari database lewat Model yang tersedia.

3

Model berinteraksi dengan database

Eloquent menerjemahkan panggilan method PHP menjadi SQL query dan mengembalikan hasilnya sebagai objek.

4

Data dikirim ke View

Controller mengoper data dari Model ke template Blade untuk ditampilkan kepada pengguna.

web.php + ProductController.php
// routes/web.php — Routing Laravel mendefinisikan URL
Route::get('/products', [ProductController::class, 'index']);
Route::get('/products/{id}', [ProductController::class, 'show']);

// ProductController.php — Controller pakai Model
use App\Models\Product;

public function index() {
  $products = Product::paginate(10);
  return view('products.index', compact('products'));
}

public function show($id) {
  $product = Product::findOrFail($id);
  return view('products.show', compact('product'));
}
💡

Tips: Manfaatkan Route Model Binding

Laravel punya fitur Route Model Binding yang bisa menyederhanakan kode Controller-mu lebih jauh. Daripada menulis Product::findOrFail($id), kamu cukup type-hint Model di parameter method: public function show(Product $product) — Laravel otomatis carikan datanya!

KESIMPULAN

Siap Pakai Eloquent ORM di Proyekmu?

Di artikel ini kita sudah menjelajahi:

  • Apa itu Model dan bagaimana relasinya dengan tabel database di Laravel
  • Cara membuat Model dengan perintah Artisan dan properti penting seperti $fillable
  • Operasi CRUD elegan menggunakan metode-metode Eloquent ORM
  • Berbagai jenis relasi antar Model dan trik eager loading
  • Integrasi Model dengan routing laravel dan Controller dalam arsitektur MVC

Artikel ini adalah bagian dari seri 50 Artikel Belajar Laravel yang dirancang membawamu dari nol sampai bisa bikin aplikasi Laravel sendiri. Jangan lewatkan artikel berikutnya tentang Migration!

#Laravel #EloquentORM #PHP #BelajarLaravel #Database #RoutingLaravel #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