Panduan Lengkap Model Eloquent pada Laravel untuk Pemula
Setelah memahami konsep Request Response, materi penting berikutnya dalam mempelajari Laravel adalah Model Eloquent. Eloquent merupakan komponen inti dalam Laravel yang digunakan untuk berinteraksi dengan database, mulai dari menampilkan data, menyimpan data, hingga mengelola relasi antar tabel secara elegan dan efisien.
Dengan Model Eloquent, developer tidak perlu menulis query SQL secara manual, melainkan cukup menggunakan sintaks PHP yang mudah dibaca. Hal ini menjadikan proses pengembangan lebih cepat, aman, dan terstruktur.
Apa Itu Model Eloquent?
Model Eloquent adalah implementasi ORM (Object Relational Mapping) pada Laravel. ORM memungkinkan tabel database direpresentasikan sebagai objek dalam kode, dan setiap record dalam tabel menjadi instance dari objek tersebut.
Contoh konsep:
- Tabel
users→ ModelUser - Tabel
posts→ ModelPost
Dengan cara ini, kita dapat memanipulasi data database seperti mengakses properti objek.
Cara Membuat Model Eloquent
Laravel menyediakan Artisan command untuk membuat model.
Perintah Dasar
php artisan make:model Product
Perintah ini akan membuat file model pada direktori:
app/Models/Product.php
Isi default model kurang lebih seperti berikut:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class Product extends Model
{
//
}
Model dengan Migration (Direkomendasikan)
Untuk membuat model beserta migration secara sekaligus:
php artisan make:model Product -m
Opsi -m berarti Laravel juga membuat file migration tabel di database/migrations.
Struktur Dasar Model
Model Eloquent biasanya berisi informasi seperti:
- Nama tabel (opsional)
- Kolom yang bisa diisi (
$fillable) - Relasi dengan tabel lain
- Cast data ke tipe tertentu
Contoh struktur Model lengkap:
class Product extends Model
{
protected $fillable = ['name', 'price', 'stock'];
protected $casts = [
'price' => 'float',
'stock' => 'integer',
];
}
Menentukan Kolom yang Bisa Diisi
Untuk mencegah mass assignment vulnerability, gunakan $fillable:
protected $fillable = ['name', 'email', 'password'];
Atau, alternatifnya gunakan $guarded untuk melarang kolom tertentu:
protected $guarded = ['id'];
Namun untuk keamanan, $fillable umumnya lebih disarankan.
Operasi CRUD dengan Model Eloquent
1. Create (Menyimpan Data)
Menggunakan Create
User::create([
'name' => 'Akbar',
'email' => 'akbar@mail.com'
]);
Pastikan kolom sudah didaftarkan pada $fillable.
Menggunakan Save
$user = new User; $user->name = 'Akbar'; $user->email = 'akbar@mail.com'; $user->save();
2. Read (Mengambil Data)
Ambil Semua Data
$users = User::all();
Ambil Berdasarkan ID
$user = User::find(1);
Ambil Dengan Kondisi
$activeUsers = User::where('status', 'active')->get();
Ambil Satu Record
$user = User::where('email', 'akbar@mail.com')->first();
3. Update Data
Dengan Fetch + Save
$user = User::find(1); $user->name = 'Akbar Update'; $user->save();
Dengan Method Update
User::where('id', 1)->update(['name' => 'Akbar Update']);
4. Delete Data
Delete Berdasarkan ID
User::destroy(1);
Delete Menggunakan Instance
$user = User::find(2); $user->delete();
Query Builder vs Eloquent
Walaupun sama-sama untuk query database, Eloquent ORM unggul untuk operasi CRUD dan relasi karena representasi objeknya lebih mudah dipahami.
Contoh Query Builder:
DB::table('users')->get();
Contoh Eloquent:
User::all();
Dalam kasus kompleks, keduanya dapat digabungkan sesuai kebutuhan.
Relasi pada Model Eloquent
Relasi adalah fitur penting dalam Eloquent. Jenis relasi yang umum:
1. One to One
public function profile()
{
return $this->hasOne(Profile::class);
}
2. One to Many
public function posts()
{
return $this->hasMany(Post::class);
}
3. Many to Many
public function roles()
{
return $this->belongsToMany(Role::class);
}
Dengan relasi ini, data antar tabel dapat diambil secara ekspresif, misalnya:
$user = User::with('posts')->find(1);
Pagination pada Eloquent
Laravel mendukung pagination otomatis:
$users = User::paginate(10);
Pada Blade:
{{ $users->links() }}
Casting Data
Gunakan $casts untuk konversi otomatis:
protected $casts = [
'email_verified_at' => 'datetime',
'price' => 'float',
];
Best Practice Penggunaan Model Eloquent
✔ Gunakan $fillable untuk keamanan
✔ Definisikan relasi dalam model
✔ Gunakan paginate untuk listing data besar
✔ Hindari logika berat di model (gunakan service layer jika perlu)
✔ Manfaatkan eager loading (with()) untuk menghindari N+1 query
Contoh eager loading:
User::with('posts')->get();
Kesimpulan
Model Eloquent merupakan fitur ORM powerful dalam Laravel yang mempermudah pengelolaan database secara objektif dan ekspresif. Dengan fitur CRUD sederhana, sistem relasi yang intuitif, serta integrasi dengan Query Builder, Eloquent menjadi salah satu alasan Laravel begitu populer di kalangan developer modern.
Setelah memahami Model Eloquent, materi lanjutan dalam playlist kamu adalah: