Langsung ke konten utama

Cara Membangun Fitur Search Sederhana dengan Laravel Query Builder

Pendahuluan

Bayangin lagi ngerjain fitur sederhana, tapi client minta pencarian data yang bisa nyari di banyak kolom sekaligus tanpa bikin aplikasi lemot. Sering banget kita terjebak nulis query panjang lebar di Controller yang akhirnya bikin code jadi berantakan alias spaghetti code. Padahal, pakai Query Builder bawaan Laravel, kita bisa bikin fitur search yang clean dan tetep performant tanpa harus install package pencarian yang berat.

Tips & Best Practices

  • Di banyak project, biasanya saya mulai dari menaruh logika pencarian di dalam Scope Model supaya controller tetap bersih dan fokus ke request-response aja.
  • Pernah kejadian user minta pencarian yang bisa nembus ke relasi, jadi saya selalu membiasakan pakai whereHas daripada join manual yang kadang bikin query jadi ambigu.
  • Pas lagi handling database besar, saya pasti selalu nambahin when() agar query cuma ditambahin ke builder kalau input request-nya beneran ada isinya, ini ngebantu banget biar query nggak kepanjangan tanpa alasan.

Contoh Kode

Gini cara saya biasanya nulis query pencarian di model supaya gampang dipanggil di mana aja:

public function scopeSearch($query, $search) { return $query->when($search, function ($q) use ($search) { $q->where('title', 'like', "%{$search}%") ->orWhere('content', 'like', "%{$search}%"); }); }

Terus di controller tinggal panggil santai: $posts = Post::search($request->q)->paginate(10);

Variasi Implementasi

Tergantung kebutuhan, kalau datanya mulai jutaan row, pendekatan like memang bakal mulai kerasa berat. Biasanya saya mulai nimbang buat beralih ke Full-Text Search bawaan MySQL kalau tabelnya nggak terlalu kompleks, atau sekalian pakai Laravel Scout kalau mau performa yang lebih serius. Tapi buat dashboard internal atau aplikasi skala menengah, pendekatan Query Builder standar biasanya udah lebih dari cukup.

Kesalahan Umum

  • Lupa nge-sanitize input, padahal biar simpel, tetap harus waspada sama input user meski udah pakai parameter binding.
  • Terlalu banyak pakai orWhere tanpa grouping, ini sering bikin query pencarian jadi berantakan dan return data yang nggak relevan karena logic OR-nya bocor ke kondisi lain.
  • Sering lupa pakai pagination, alhasil kalau datanya ribuan, aplikasi langsung kena memory limit pas ditarik semua sekaligus.
  • Nggak pakai index di database, padahal fitur pencarian yang pakai like itu butuh banget index supaya nggak full table scan.
  • Terlalu maksa naruh query pencarian langsung di file View pakai raw SQL, ini bikin susah di-debug kalau nanti ada perubahan kolom database.

Ringkasan

Fitur search memang kelihatannya sepele, tapi kalau dibangun dengan pola yang rapi, bakal bikin codebase kita lebih enak dirawat. Jangan buru-buru install library berat kalau kebutuhan dasarnya masih bisa dicover sama Query Builder yang solid. Intinya, konsisten naruh logic di model dan selalu perhatiin performa sejak dini, nanti hidup jadi lebih tenang pas maintenance project-nya.

Komentar

Postingan populer dari blog ini

Fungsi lain tombol penerima panggilan di headset

Kegunaan tombol yang berada di headset utamanya adalah untuk menerima panggilan dan pause panggilan. Dan headset itu sendiri, kadang juga digunakan untuk mendengarkan music, digunakan bersama saat main game, supaya suara yang dikeluarkan oleh gadget tidak terlalu keras sehingga mengurangi beban gadget. Dengan mengurangi beban gadget, ada beberapa yang beranggapan kalau itu akan menghemat batere.

Cara Reset Password Database MySQL Menggunakan Laragon

Cara Reset Password Database MySQL Menggunakan Laragon Laragon adalah salah satu lingkungan pengembangan lokal (local development environment) yang populer di antara para pengembang web. Dalam beberapa kasus, mungkin kita perlu mereset password database MySQL pada Laragon jika lupa password atau untuk alasan keamanan tertentu. Berikut adalah langkah-langkah yang dapat kita ikuti untuk melakukan reset password database MySQL menggunakan Laragon:

Apa Itu R dan L di Headset? Ini Dia Perbedaan dan Fungsinya yang Perlu Anda Ketahui

Arti R dan L di Headset: Apa Perbedaannya? Headset adalah alat yang digunakan untuk mendengarkan suara dari sumber audio seperti ponsel, komputer, atau pemutar musik. Headset biasanya terdiri dari dua bagian, yaitu earphone yang dimasukkan ke dalam telinga dan mikrofon yang digunakan untuk berbicara. Pada earphone, kita sering melihat ada tulisan R dan L. Apa arti dan perbedaan dari kedua huruf tersebut?