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 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.
Untuk memulainya, Anda bisa langsung lakukan instalasi ke dalam proyek Laravel yang sedang Anda kembangkan dengan menggunakan composer seperti:
composer require hammerstone/fast-paginate
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 👋🏻
Let's start living like no one can help us in any event, so that when we are helped in certain times, it becomes a plus in itself.