Mengenal Query Builder Laravel untuk Pengolahan Data Database
Laravel menyediakan beberapa cara untuk berinteraksi dengan database, yaitu melalui Eloquent ORM, Raw SQL, dan Query Builder.
Dari ketiganya, Query Builder berada di posisi tengah: lebih fleksibel dibanding Eloquent namun tetap lebih mudah daripada penulisan SQL mentah.
Query Builder memungkinkan developer membuat query SQL dengan sintaks berbasis PHP yang lebih aman, bersih, dan mudah dibaca. Fitur ini umumnya digunakan ketika developer membutuhkan kontrol query yang lebih detail namun tetap ingin menghindari penulisan SQL secara langsung.
Keunggulan Menggunakan Query Builder
Beberapa kelebihan menggunakan Query Builder yaitu:
- Sintaks lebih mudah dibaca
- Mengurangi kompleksitas SQL mentah.
- Aman dari SQL Injection
- Sebagian besar fungsi builder menggunakan parameter binding.
- Mendukung berbagai jenis operasi database
- Seperti select, insert, update, delete, join, grouping, aggregated, dan lain-lain.
- Lebih fleksibel dibanding Eloquent
- Sangat cocok untuk query kompleks dan custom.
Dasar Penggunaan Query Builder
Query Builder menggunakan fasad DB dan berada di namespace:
use IlluminateSupportFacadesDB;
1. SELECT Data
Mengambil seluruh data:
$users = DB::table('users')->get();
Mengambil satu baris data:
$user = DB::table('users')->where('id', 1)->first();
Mengambil satu kolom:
$email = DB::table('users')->where('id', 1)->value('email');
Mengambil list kolom dalam bentuk array:
$emails = DB::table('users')->pluck('email');
2. INSERT Data
Untuk memasukkan data ke tabel:
DB::table('users')->insert([
'name' => 'Akbar',
'email' => 'akbar@example.com',
'password' => bcrypt('secret')
]);
Insert dan ambil id terakhir (mysql/autoincrement):
$id = DB::table('users')->insertGetId([
'name' => 'Admin',
]);
3. UPDATE Data
Mengubah data tertentu:
DB::table('users')
->where('id', 1)
->update(['name' => 'Akbar Silohon']);
4. DELETE Data
Menghapus data berdasarkan kondisi:
DB::table('users')->where('id', 1)->delete();
Hapus semua data:
DB::table('users')->delete();
5. WHERE Clause
Query Builder mendukung banyak operator where, seperti:
DB::table('users')->where('status', 'active')->get();
DB::table('posts')->where('views', '>=', 100)->get();
Multiple where:
DB::table('users')
->where('status', 'active')
->where('role', 'admin')
->get();
orWhere juga tersedia:
DB::table('users')
->where('role', 'admin')
->orWhere('role', 'editor')
->get();
6. ORDER, LIMIT, OFFSET
Order By:
DB::table('users')->orderBy('created_at', 'desc')->get();
Limit & Offset:
DB::table('users')->limit(10)->offset(20)->get();
7. JOIN Query
Query Builder mendukung beberapa tipe join:
DB::table('users')
->join('posts', 'users.id', '=', 'posts.user_id')
->select('users.*', 'posts.title')
->get();
Jenis join lain seperti leftJoin() & rightJoin():
DB::table('users')
->leftJoin('profiles', 'users.id', '=', 'profiles.user_id')
->get();
8. Aggregation Functions
Query Builder mendukung fungsi agregasi seperti:
$total = DB::table('orders')->count();
$sum = DB::table('orders')->sum('amount');
$avg = DB::table('users')->avg('age');
$max = DB::table('products')->max('price');
$min = DB::table('products')->min('price');
9. RAW Expressions (SQL mentah)
Untuk kebutuhan khusus, Query Builder juga menerima SQL mentah:
$users = DB::select("SELECT * FROM users WHERE status = ?", ['active']);
Atau via builder:
DB::table('products')
->select(DB::raw('price * 100 as price_in_cents'))
->get();
Studi Kasus Singkat
Misalkan menampilkan 10 user aktif urut berdasarkan terbaru:
$users = DB::table('users')
->where('status', 'active')
->orderBy('created_at', 'desc')
->limit(10)
->get();
Kapan Menggunakan Query Builder?
Gunakan Query Builder ketika:
✔ Membutuhkan query kompleks
✔ Melakukan aggregate dan grouped data
✔ Tidak perlu relasi Eloquent langsung
✔ Perlu performa lebih cepat dibanding Eloquent
Sedangkan Eloquent lebih cocok untuk manipulasI CRUD dengan relasi antar model.
Kesimpulan
Query Builder adalah fitur penting pada Laravel untuk melakukan operasi database dengan sintaksis yang rapi dan aman. Penggunaannya berada di antara SQL murni dan Eloquent ORM, sehingga sangat ideal ketika developer membutuhkan fleksibilitas query dengan tetap menjaga kejelasan dalam pengembangan.
Pemahaman Query Builder sangat bermanfaat dalam membangun aplikasi yang efisien, performa tinggi, dan mudah dipelihara.
Baca Juga: Validasi Form Laravel