Pernah nggak kamu nulis query SQL mentah berjam-jam hanya untuk bikin fitur tambah data sederhana, terus sadar ada cara yang jauh lebih elegan? Nah, itulah momen seseorang pertama kali ketemu Eloquent ORM di Laravel — dan hidupnya berubah. Di artikel seri ke-14 ini, kita akan belajar cara melakukan operasi CRUD lengkap, mulai dari menyiapkan struktur database lewat migration Laravel, mendefinisikan Model, hingga menulis kode Create, Read, Update, dan Delete yang bersih dan efisien.
Kalau kamu sudah baca Artikel 13 tentang Query Builder vs Eloquent, kamu udah tahu kenapa Eloquent lebih powerfull. Sekarang saatnya kita tahu bagaimana cara pakainya. Siap? Let's go! 💪
Apa itu Eloquent ORM?
Eloquent ORM (Object Relational Mapper) adalah sistem bawaan Laravel yang memungkinkan kamu berinteraksi dengan database menggunakan objek PHP, bukan query SQL mentah. Setiap tabel database direpresentasikan oleh sebuah Model, dan setiap baris di tabel adalah sebuah instance dari model tersebut.
Tabel `products` → Model Product → Operasi CRUD via PHP Objects
01. Menyiapkan Database dengan Migration Laravel
Bayangkan migration Laravel seperti version control untuk database kamu. Sama seperti Git yang mencatat setiap perubahan kode, migration mencatat setiap perubahan struktur database — mulai dari bikin tabel baru, tambah kolom, sampai hapus index. Hasilnya? Semua anggota tim kamu bisa punya struktur database yang persis sama hanya dengan satu perintah.
Migration di Laravel pertama kali diperkenalkan di versi 3.0 (2012). Lebih dari 12 tahun kemudian, fitur ini masih jadi salah satu alasan utama developer jatuh cinta sama Laravel! ❤️
Langkah-langkah Membuat Migration
Jalankan perintah ini di terminal. Laravel otomatis membuat file migration di folder database/migrations/
up()
Buka file yang baru dibuat, lalu isi kolom-kolom yang dibutuhkan menggunakan Schema Builder:
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->text('description')->nullable();
$table->decimal('price', 8, 2);
$table->integer('stock')->default(0);
$table->boolean('is_active')->default(true);
$table->timestamps();
});
}
Setelah file migration siap, eksekusi dengan perintah berikut. Tabel products akan langsung terbuat di database kamu!
02. Membuat Model Eloquent & Konfigurasinya
Kalau migration Laravel itu adalah cetak biru struktur tabel, maka Model Eloquent adalah juru bicara tabel tersebut di dalam kode PHP kamu. Melalui Model inilah semua operasi CRUD akan dilakukan — tanpa perlu nulis SQL satu baris pun.
Gunakan flag -m saat membuat model untuk sekaligus membuat file migration-nya: php artisan make:model Product -m. Efisiensi level dewa! 🧙
Buat model dengan perintah Artisan, lalu konfigurasikan propertinya:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Product extends Model
{
use HasFactory;
// Kolom yang boleh diisi massal (Mass Assignment)
protected $fillable = [
'name',
'description',
'price',
'stock',
'is_active',
];
// Cast otomatis tipe data
protected $casts = [
'price' => 'decimal:2',
'is_active' => 'boolean',
];
}
Selalu definisikan properti $fillable atau $guarded di Model kamu. Tanpanya, Eloquent akan memblokir operasi mass assignment dan aplikasimu bisa error 500 tiba-tiba. Sudah banyak yang tertipu bug ini! 😅
03. Operasi CRUD Lengkap dengan Eloquent ORM
Inilah bagian yang paling sering dicari developer. Setelah migration Laravel selesai dijalankan dan Model siap, saatnya kita lakukan 4 operasi fundamental: Create, Read, Update, dan Delete.
⚡ Peta CRUD di Eloquent
create() / save()all() / find() / where()update() / save()delete() / destroy()✍️ CREATE — Tambah Data Baru
Ada dua cara membuat data baru dengan Eloquent. Metode create() lebih ringkas, sementara instansiasi manual memberi kontrol lebih:
$product = Product::create([
'name' => 'Laptop Gaming RTX 4060',
'price' => 12500000,
'stock' => 15,
'is_active' => true,
]);
// Cara 2: Instansiasi manual — lebih fleksibel
$product = new Product();
$product->name = 'Laptop Gaming RTX 4060';
$product->price = 12500000;
$product->stock = 15;
$product->save(); // ← Jangan lupa save()!
🔍 READ — Ambil & Tampilkan Data
Eloquent menyediakan berbagai cara untuk mengambil data, dari yang paling sederhana hingga yang sangat spesifik:
$products = Product::all();
// Ambil berdasarkan ID (auto throw 404 jika tidak ada)
$product = Product::findOrFail(1);
// Filter dengan kondisi WHERE
$activeProducts = Product::where('is_active', true)->get();
// Chaining: filter + sort + limit
$cheapProducts = Product::where('price', '<', 5000000)
->orderBy('price', 'asc')
->limit(10)
->get();
// Pagination otomatis (15 data per halaman)
$paginatedProducts = Product::paginate(15);
✏️ UPDATE — Ubah Data yang Ada
Untuk update, kamu perlu ambil data dulu, ubah nilainya, lalu simpan. Atau gunakan method update() langsung pada query:
$product = Product::findOrFail(1);
$product->price = 11000000;
$product->stock = 20;
$product->save();
// Cara 2: update() massal — satu baris! ✅
Product::findOrFail(1)->update([
'price' => 11000000,
'stock' => 20,
]);
// Update banyak record sekaligus
Product::where('stock', 0)->update(['is_active' => false]);
🗑️ DELETE — Hapus Data
Eloquent memiliki dua jenis delete: hard delete (permanen) dan soft delete (data disembunyikan, bukan benar-benar dihapus). Untuk sementara, kita pakai hard delete dulu:
Product::findOrFail(1)->delete();
// Cara lebih singkat: destroy() dengan ID
Product::destroy(1);
// Hapus banyak ID sekaligus (array)
Product::destroy([1, 2, 5]);
// Hapus berdasarkan kondisi WHERE
Product::where('is_active', false)->delete();
Di aplikasi production, hindari hard delete untuk data penting seperti transaksi atau user. Gunakan Soft Delete bawaan Laravel dengan menambahkan trait SoftDeletes di Model dan kolom $table->softDeletes() di migration-mu. Data akan tetap ada di database, hanya disembunyikan! 🛡️
04. Migration Laravel Lanjutan: Rollback & Modifikasi Tabel
Salah satu kekuatan terbesar migration Laravel adalah kemampuan untuk "mundur" ke versi database sebelumnya. Ini seperti tombol CTRL+Z untuk struktur database kamu!
Buat migration baru khusus untuk modifikasi kolom. Jangan edit file migration lama yang sudah berjalan!
// Di dalam method up():
Schema::table('products', function (Blueprint $table) {
$table->string('category')->nullable()->after('name');
});
Artikel ini adalah bagian dari Seri Belajar Laravel Lengkap — 50 Artikel. Di setiap artikel, kita membangun fondasi yang lebih kuat. Pastikan kamu sudah baca dari Artikel 1 agar pemahaman tentang migration Laravel dan Eloquent jauh lebih solid dan terhubung dengan konteks yang lebih besar. 🏗️
Kamu Sekarang Sudah Bisa CRUD Pakai Eloquent! 🚀
Di artikel ini kita sudah melewati perjalanan lengkap: dari menyiapkan struktur tabel lewat migration Laravel, mendefinisikan Model Eloquent dengan properti $fillable, hingga melakukan operasi CRUD — Create, Read, Update, Delete — dengan cara yang bersih dan elegan. Tidak ada SQL mentah, tidak ada kode yang verbose. Hanya PHP yang berbicara secara natural dengan database.
💬 Pertanyaan untuk kamu: Bagian CRUD mana yang paling sering kamu pakai di project-mu? Create? Atau justru Query Read yang complex? Ceritakan di kolom komentar di bawah — komunitas ini tumbuh dari diskusi kalian! Dan jangan lupa share artikel ini ke teman yang masih nulis SQL manual 😄
🏷️ Tags Artikel
No comments:
Post a Comment