Pluginify

Masuk Daftar
Home > Blog > Laravel > Panduan Lengkap Model Eloquent pada Laravel untuk Pemula

Panduan Lengkap Model Eloquent pada Laravel untuk Pemula

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 → Model User
  • Tabel posts → Model Post

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:

Migration Database

Pluginify
Pluginify