Minggu, 10 July 2022

Fast Paginate Untuk Laravel

Laravel memang sudah mempunyai pagination by default, namun Anda harus tahu bahwa pagination itu menggunakan teknik offset dan limit di dalam MySQL. Sehingga jika Anda memiliki ribuan data, itu akan tidak menutup kemungkinan terjadi nya laggy.

Laravel
Package

Daftar Isi

Laravel memang sudah mempunyai pagination by default, namun Anda harus tahu bahwa pagination itu menggunakan teknik offset dan limit di dalam MySQL. Sehingga jika Anda memiliki ribuan data, itu akan tidak menutup kemungkinan terjadi nya laggy.

Maka di sini saya ingin memberi tahu Anda tentang package baru yang sangat luar biasa untuk kemudian Anda bisa gunakan menjadi pagination Anda by default.

Saya ingin menekankan bahwa di sini kita bicara tentang pagination yang memakai paginate(), simplePaginate() bukan cursorPaginate().

Package ini menggunakan metode SQL yang mirip dengan teknik "deferred join" untuk mencapai kecepatan. Teknik ini merupakan cara untuk menunda akses ke kolom yang diminta sampai offset dan limit sudah diterapkan. Sehingga dengan teknik ini, subquery akan dioptimasi dengan index tertentu untuk hasil yang maksimal.

Oh iya, package ini juga baru saja di terbitkan oleh Aaron Francis pada 8 jul, 2022. Kurang lebih 2 hari yang lalu dari saat saya membuat artikel ini.

Installation

Untuk memulainya, Anda bisa langsung lakukan instalasi ke dalam proyek Laravel yang sedang Anda kembangkan dengan menggunakan composer seperti:

composer require hammerstone/fast-paginate

Usage

Dan sekarang, Anda bisa mencoba nya dengan menggunakan fungsi fastPaginate(). Ingat ya, bukan berarti karena Anda menggunakan package ini, Anda jadi tidak bisa menggunakan api pagination yang dibawa laravel. Melainkan Anda masih tetap bisa menggunakan api yang dibawa by default walaupun telah mengimplementasi fungsi dari package ini.

Berikut ini adalah contoh bagaimana Anda menggunakannya.

User::query()->latest()->fastPaginate(10);

Seperti yang saya bilang sebelumnya, Anda masih tetap bisa menggunakan api bawaan dari laravel sendiri.

User::query()->latest()->fastPaginate(10)->withQueryString();

Gunakan sebagaimana biasanya, hanya saja kali ini menggunakan fastPaginate() daripada paginate(). Jika Anda ingin mempelajari package ini lebih lanjut, Anda bisa langsung cek pada github nya.

Semoga artikel ini bermanfaat bagi Anda, until next time 👋🏻