Laravel's Query Builder minangka fluent, chainable interface kanggo nggawe lan njalanke database queries tanpa nulis raw SQL. Eloquent dibangun ing ndhuwur Query Builder — model Eloquent nggunakake dheweke ana ing mburi layar, lan query Eloquent bisa nggunakake kabeh method Query Builder.
Query Builder (tingkat database, liwat DB facade)
use Illuminate\Support\Facades\DB;
DB::table('users')
->where('active', true)
->where('age', '>', 18)
->orderBy('name')
->limit(10)
->get(); // returns generic objects (not models)
DB::table('users')->where('id', 1)->update(['name' => 'X']);
DB::table('users')->insert(['name' => 'Ann']);
Query Builder makarya langsung karo tabel (bali object biasa, dudu model Eloquent). Iku chainable lan otomatis nggunakake parameter binding — nyegah SQL injection.
Eloquent nggunakake metode fluent sing padha
// Eloquent queries support ALL Query Builder methods (it's built on top)
User::where('active', true)
->where('age', '>', 18)
->orderBy('name')
->get(); // returns User MODELS (with relationships, etc.)
Sasuwene sampeyan chain method ing model Eloquent, sampeyan nggunakake Query Builder ing mburi layar — nanging sampeyan entuk bali model (karo relationship, accessor, lan method) ngarep object biasa.
Query lanjut (loro-lorone sumusuport iki)
DB::table('orders')
->join('users', 'orders.user_id', '=', 'users.id') // joins
->select('orders.*', 'users.name')
->where('orders.total', '>', 100)
->groupBy('users.id')
->havingRaw('SUM(orders.total) > 1000')
->get();
User::where('role', 'admin')
->orWhere('role', 'editor')
->whereIn('status', ['active', 'pending'])
->get();
Loro-lorone sumusuport join, aggregate, subquery, lan kondisi kompleks.
Kapan nggunakake sing endi
Eloquent (Model::...) → the default — get models with relationships/accessors/methods.
Best for most application logic.
Query Builder (DB::table) → when you want lightweight queries without model overhead,
complex reporting/aggregations, or to avoid loading models.
Mengapa iki penting
Ngarti Query Builder lan hubungane karo Eloquent penting kanggo makarya efektif karo basis data ing Laravel lan njupuk alat sing tepat kanggo saben situasi.
Insight kunci yaiku Eloquent dibangun ing ndhuwur Query Builder — mula metode fluent, chainable sing sampeyan gunakake ing model Eloquent (where, orderBy, join, lsp.) yaiku milik Query Builder, dadi sinau siji ngajarke loro-lorone.
Query Builder menehi cara resik, aman SQL-injection (liwat automatic parameter binding) kanggo nggawe query tanpa nulis raw SQL, lan Eloquent nglayer fungsionalitas model (relationship, accessor, method) ing dhuwur.
Ngerti kapan nggunakake sing endi yaiku katrampilan praktis: Eloquent kanggo luwih akeh logika aplikasi (sampeyan entuk object model sugih karo relationship lan perilaku), lan Query Builder langsung (DB::table) kanggo query enteng tanpa overhead model, reporting/aggregation kompleks, utawa nalika sampeyan ora butuh model lengkap — sing bisa luwih efisien kanggo kasus tartamtu.
Loro-lorone aman nangani query kompleks (join, aggregate, subquery) karo fluent API sing padha.
Ngerti Query Builder, kepiye Eloquent ngabangun ing ndhuwur, parameter binding aman bareng (nyegah SQL injection), lan pilihan antarane loro-lorone penting kanggo nulis kode basis data sing efisien lan aman ing Laravel, amarga akses basis data pusat kanggo akeh aplikasi lan milih tingkat sing cocok (model-rich Eloquent lawan lightweight Query Builder) mengaruhi kajelasan lan performa.
