BLOG | eabil-PLC

Profile

Bil'ticle

Artikel 4 : Integrasi Relasi pada Fitur Pencarian dan Filter Produk - Perwira Learning Center

By nabil alifah rahman • Maret 11, 2026


A. Latar Belakang

Fitur pencarian dan filter adalah salah satu elemen terpenting dalam aplikasi e-commerce. Menurut penelitian dari Baymard Institute, 43% pengguna langsung menuju search bar saat membuka sebuah situs e-commerce, dan pengguna yang menggunakan fitur search memiliki kemungkinan 2-4 kali lebih tinggi untuk melakukan pembelian dibandingkan yang hanya browsing.

Tantangan teknis dalam membangun fitur pencarian dan filter yang handal terletak pada bagaimana mengintegrasikan relasi antar tabel dalam sebuah query yang efisien. Misalnya, mencari produk berdasarkan nama kategori, tag tertentu, atau rentang harga—semua ini membutuhkan pemahaman mendalam tentang cara kerja JOIN dan subquery dalam konteks Eloquent ORM.

Laravel menyediakan berbagai method query builder yang powerful seperti whereHas(), join(), dan Query Scope untuk membangun fitur pencarian dan filter yang kompleks namun tetap readable dan maintainable.

B. Pengertian Fitur Pencarian dan Filter Berbasis Relasi

Pencarian dan filter berbasis relasi adalah kemampuan untuk memfilter atau mencari record berdasarkan kondisi yang berasal dari tabel-tabel yang berelasi. Misalnya, mencari semua produk yang berasal dari kategori "Elektronik", memiliki tag "Promo", dengan harga antara Rp100.000–Rp500.000, dan stok lebih dari 0.

📌 Komponen Utama Filter Produk
Filter by Kategori — relasi belongsTo
Filter by Tag — relasi Many-to-Many
Filter by Rentang HargawhereBetween
Filter by Ketersediaan Stok — kondisi kolom
Pencarian Teks — LIKE / Full-text search
Sorting multi-kolomorderBy dinamis

C. Konsep dan Pembahasan

1. whereHas() untuk Filter Berdasarkan Relasi

Method whereHas() memungkinkan kita untuk memfilter model berdasarkan kondisi pada relasinya. Ini menghasilkan subquery EXISTS yang efisien dalam SQL, tanpa perlu melakukan JOIN secara manual.

2. Query Scope untuk Reusability

Laravel Query Scope memungkinkan kita untuk mendefinisikan filter yang dapat digunakan kembali (reusable) di berbagai tempat dalam aplikasi. Ada dua jenis: Local Scope (di model tertentu) dan Global Scope (berlaku di semua query model).

3. Filter Pipeline Pattern

Pola ini memungkinkan kita untuk membangun chain filter yang dinamis berdasarkan input pengguna, di mana setiap filter hanya diterapkan jika parameter yang sesuai diberikan. Membuat kode lebih modular dan mudah di-test.

D. Alat dan Bahan

 

  

E. Praktik Implementasi

1. Query Scope pada Model Product

2. Filter Pipeline Class

3. Controller

4. Contoh URL Filter

5. Menggunakan spatie/laravel-query-builder

 

Kapan Menggunakan Package vs Custom Filter?
Gunakan custom Filter Pipeline jika filter Anda memiliki logika bisnis yang kompleks dan spesifik.
Gunakan spatie/laravel-query-builder jika Anda membutuhkan API filter yang konsisten dan standar, terutama untuk REST API.

F. Kesimpulan

Membangun fitur pencarian dan filter yang terintegrasi dengan relasi database membutuhkan pemahaman mendalam tentang query builder Laravel dan pola desain yang tepat. Dengan menggunakan Query Scope, Filter Pipeline Pattern, dan method whereHas(), developer dapat membangun sistem filter yang powerful, reusable, dan mudah di-extend.

Integrasi dengan package seperti spatie/laravel-query-builder dapat mempercepat development dan memberikan API filter yang konsisten, terutama untuk proyek yang mengembangkan REST API publik.

G. Daftar Pustaka

  1. Laravel Documentation. (2024). Query Builder dan Eloquent Scopes. https://laravel.com/docs/10.x/queries
  2. Spatie. (2024). Laravel Query Builder Package. https://spatie.be/docs/laravel-query-builder
  3. Baymard Institute. (2023). E-Commerce Site Search Usability Study. Baymard.com.
  4. Otwell, T. (2023). Laravel: Up & Running. O'Reilly Media.
  5. Martin, R. C. (2017). Clean Architecture: A Craftsman's Guide to Software Structure. Prentice Hall.