Mengenal Eloquent Database pada Laravel

Hai, Sob! Untuk menampilkan data dari database di Laravel, tidak hanya menggunakan Query Builder. Laravel menyediakan fitur yang bernama Eloquent, yaitu cara yang lebih sederhana dan berorientasi objek untuk bekerja dengan database.

Eloquent memungkinkan kamu menulis query interaksi dengan sintaks yang bersih, ringkas, dan mudah dibaca. Selain itu, baik Query Builder maupun Eloquent sama-sama aman karena Laravel sudah secara otomatis mencegah serangan SQL Injection di balik layar.

Yuk, kenalan dulu dengan Eloquent Database Laravel, Sob!

Apa itu Eloquent?

Eloquent adalah ORM (Object Relational Mapping) bawaan Laravel yang memudahkan kamu untuk berinteraksi dengan database. Dengan Eloquent, setiap tabel dalam database direpresentasikan sebagai sebuah model. Model inilah yang kamu gunakan untuk berinteraksi dengan data seperti  mengambil data, mencari data berdasarkan kondisi, menyimpan data baru, mengubah atau menghapus data.

Contoh:

  • Tabel mahasiswa > model Mahasiswa
  • Tabel buku > model Buku

 

Semua model disimpan di folder app/Models/

Eloquent mendukung fitur relasi antar tabel, eager loading untuk menghindari query berulang (N+1 problem), mutators dan accessors untuk mengubah nilai sebelum disimpan atau ditampilkan, event dan lifecycle hooks (creating, updating, dan lain-lain).

Perbedaan Query Builder dan Eloquent

Perbedaan utama antara Eloquent dan Query Builder terletak pada operasinya, berikut contoh perbandingannya:

Operasi

Query Builder

Eloquent

Ambil semua data

DB:table(‘users’)->get()

User:all()

Ambil data satu baris

DB::table(‘users’)->where(‘email’, ‘[email protected]’)->first();

User::where(‘email’, ‘[email protected]’)->first();

Insert data

DB::table(‘users’)->insert([…]);

$user = new User; $user->nama = ‘Aldi’; $user->save();

Eloquent lebih pendek, mudah dibaca, dan mengikuti struktur OOP (Object-Oriented-Programming).

Kapan Harus Menggunakan Eloquent

Kamu bisa menggunakan Eloquent ketika:

  • Aplikasi kamu menggunakan struktur tabel yang jelas dan memiliki relasi antar tabel
  • Kamu ingin kode yang bersih, ringkas, dan mudah dipelihara
  • Kamu ingin memanfaatkan fitur Laravel seperti mass assignment, relasi model. dan event model


Namun, jika kamu hanya ingin menulis query cepat atau kompleks tanpa model, Query Builder tetap pilihan yang baik.

Relasi pada Eloquent

Eloquent sangat poweful dalam mengelola relasi antar tabel, seperti:

Jenis Relasi

Fungsi

One to One

hasOne, belongsTo

One to Many

hasMany. belongsTo

Many to Many

belongsToMany

Polymorphic

morphOne, morphMany, dll

Contoh relasi:

				
					// Model Mahasiswa.php
public function jurusan() {
    return $this->belongsTo(Jurusan::class);
}

// Model Jurusan.php
public function mahasiswa() {
    return $this->hasMany(Mahasiswa::class);
}

				
			

Logika relasinya:

  • Setiap Mahasiswa hanya memiliki satu jurusan > berarti mahasiswa milik jurusan > belongsTo
  • Satu Jurusan bisa punya banyak mahasiswa > berarti jurusan memiliki banyak mahasiswa > hasMany

Tips untuk Pemula

  • Ikuti penamaan Laravel (Naming Convention): nama tabel jamak: books, nama tabel tunggal: Book
  • Gunakan $fillable atau $guarded untuk mencegah serangan mass-assignment
				
					protected $fillable = ['judul', 'penulis'];
				
			
  • Gunakan relationship agar tidak perlu menulis query berulang-ulang
  • Manfaatkan fitur seperti firstOrFail(), findOrFail() untuk menangani data yang tidak ditemukan

Contoh sederhana menggunakan Eloquent:

Model: User.php

				
					class User extends Model
{
    protected $table = 'users';
}

				
			

Penjelasan:

Potongan kode di atas merepresentasikan model eloquent User.php yang mewakili data dari sebuah tabel di database.

protected $table = ‘users’; menentukan bahwa model ini terhubung dengan tabel users di database. Sebenarnya, kalau nama model adalah User, Laravel otomatis menganggap nama tabelnya users, jadi baris ini bisa dihapus jika kamu mengikuti konvensi penamaan Laravel.

Controller

				
					public function index()
{
    $users = User::all(); // Ambil semua user
    return view('user.index', compact('users'));
}

				
			

Penjelasan:

Fungsi atau method index() pada controller di atas mengembalikan data semua user dari tabel User menggunakan eloquent lalu menyimpannya ke dalam variabel $users.

return view(‘user.index’, compact(‘users’)); menampilkan view Blade resources/views/user/index.blade.php, sambil mengirimkan data $users ke view tersebut agar bisa ditampilkan di halaman web.

Nah, supaya lebih paham implementasi Eloquent untuk menampilkan data dari database, silahkan ikuti pembahasan pada artikel CRUD Data dengan Eloquent Laravel untuk membuat aplikasi CRUD sederhana menggunakan Eloquent Laravel.

Persiapan

Namun, sebelum mengikuti pembahasan pada artikel tersebut, kamu perlu melakukan beberapa persiapan awal berikut:

1) Pastikan kamu sudah menginisiasi proyek Laravel di lokal

2) Membuat database di phpMyAdmin. Sebagai contoh nama database: db_perpustakaan

3) Demo membuat CRUD dengan Eloquent yang dibahas pada artikel berikutnya akan membuat tabel menggunakan perintah artisan migrate. Jadi, kamu hanya persiapkan membuat database saja.

4) Selanjutnya, buka file .env untuk melakukan pengaturan database dengan aplikasi Laravel. Atur config database sesuai dengan kebutuhan kamu.

				
					DB_DATABASE=db_perpustakaan
DB_USERNAME=root
DB_PASSWORD
				
			

5) Selesai

Eloquent adalah fitur powerful Laravel yang memudahkan kamu mengelola data secara efisien dan aman. Dengan struktur berbasis model dan relasi, Eloquent menjadi alat penting untuk membangun aplikasi yang bersih, modular, dan scalable. Yuk, mulai biasakan pakai Eloquent supaya kodenya makin rapi dan “Laravel banget”, Sob! heheh

Kalau ada artikel yang belum tersedia silahkan menghubungi Tim Support Jagoan Hosting, Sob!

Related Posts
Tips Mengatasi Error Undefined Index / Variable

Pengantar Halo sobat Jagoan! di tutorial kali ini kita bakalan membahas permasalahan Error Undefined Index/Variable. Pasti sekarang kamu lagi main-main Read more

Tutorial Mempercepat Load Website dengan Caching Browser

Hai Sob! Apa Sobat lagi bingung gimana caranya mempercepat load website dengan caching browser? Santai aja Sob, dibawah ini banyak Read more

Tutorial Menambahkan Module phpinfo mysqli, gd, pdo, zip, mcrypt, mbstring melalui cpanel select php version

Pernahkah kamu mengalami error yang berkaitan dengan phpinfo mysqli, gd, pdo, zip, mcrypt, mbstring? Nggak perlu panik, Sob, kamu hanya Read more

Tutorial Cara Mengatasi Laporan Google Attack Site

Halo Sob! Pernah nemuin peringatan kayak gini nggak? Apa yang kamu lakukan ketika mendapatkan peringatan "Google Attack Site" seperti ini?[caption Read more