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!
Pengantar Halo sobat Jagoan! di tutorial kali ini kita bakalan membahas permasalahan Error Undefined Index/Variable. Pasti sekarang kamu lagi main-main Read more
Hai Sob! Apa Sobat lagi bingung gimana caranya mempercepat load website dengan caching browser? Santai aja Sob, dibawah ini banyak Read more
Pernahkah kamu mengalami error yang berkaitan dengan phpinfo mysqli, gd, pdo, zip, mcrypt, mbstring? Nggak perlu panik, Sob, kamu hanya Read more
Halo Sob! Pernah nemuin peringatan kayak gini nggak? Apa yang kamu lakukan ketika mendapatkan peringatan "Google Attack Site" seperti ini?[caption Read more