Ruang penulis
← Kembali ke jurnal
Laravel

Menjaga Filter Pencarian saat Pagination di Laravel

Bangun daftar artikel dengan pencarian judul, urutan konsisten, dan tautan halaman yang mempertahankan kata kunci.

DAdministrator · 20 Sep 2026 · 1 menit baca

Pengguna mencari artikel, berpindah ke halaman kedua, lalu hasil pencarian hilang. Penyebab yang sering terjadi adalah parameter filter tidak ikut masuk ke tautan pagination.

Contoh ini memakai parameter q untuk judul dan hanya menampilkan artikel yang sudah terbit. Gunakan query builder untuk membentuk kondisi sebelum memanggil paginate. Nama view dan route dapat disesuaikan dengan aplikasi Anda.

Contoh implementasi

public function index(\Illuminate\Http\Request $request)
{
    $data = $request->validate(['q' => ['nullable', 'string', 'max:100']]);
    $query = trim($data['q'] ?? '');

    $posts = \App\Models\Post::query()
        ->whereNotNull('published_at')
        ->where('published_at', '<=', now())
        ->when($query !== '', fn ($builder) =>
            $builder->where('title', 'like', '%'.$query.'%'))
        ->orderByDesc('published_at')
        ->orderByDesc('id')
        ->paginate(10)
        ->appends(['q' => $query]);

    return view('articles.index', compact('posts', 'query'));
}
<form method="get">
    <label for="query">Search articles</label>
    <input id="query" name="q" value="{{ $query }}">
    <button>Search</button>
</form>
@foreach ($posts as $post)
    <h2>{{ $post->title }}</h2>
@endforeach
{{ $posts->links() }}

Cara memeriksa

Siapkan lebih dari sepuluh artikel yang judulnya cocok dengan kata kunci. Buka halaman kedua dan pastikan URL tetap memuat q. Lakukan pencarian baru melalui form; karena form tidak mengirim nomor halaman, pencarian kembali dimulai dari halaman pertama.

Urutan kedua berdasarkan id membantu ketika beberapa artikel memiliki waktu terbit sama. Contoh menggunakan semantik SQL LIKE: % dan _ di input berperan sebagai wildcard. Jika produk membutuhkan pencarian literal, tambahkan mekanisme escape yang sesuai database. Pencarian %kata% pada data besar juga perlu dievaluasi dengan strategi indeks atau mesin pencarian.

Referensi

Dokumentasi resmi

← Jelajahi catatan lainnya