سلام و عرض ادب
همونجور که میدونید زمانیکه تعداد رکوردامون زیاده، وقتی از paginate استفاده میکنیم، چون میخواد count اون تیبل رو بگیره، زمان زیادی میبره که جواب رو بگیریم. به طور مثال توی ۲ میلیون رکورد شاید ۶ ثانیه طول بکشه.
لاراول یه متدی داره به اسم ()simplePaginate که دیگه این count رو نمیگیره و فقط صفحات قبلی و بعدی رو نمایش میده که خب خیلی هم خوبه.
ولی مشکل جایی هست که وقتی میخوایم از یک سری پکیج استفاده کنیم دیگه نمیتونیم از این simplePaginate استفاده کنیم. به طور مثال پکیج laravel datatables.
توی این پکیج ما یه کوئری بیلدر میسازیم و بهش میدیم، خودش دیگه هم paginate میکنه، هم رندر میکنه و ... .
البته این پکیج خودش یه قابلیت داره به اسم getManualCount که به صورت دستی تعداد رو میگیره، و دیگه واسه گرفتن تعداد رکوردها جهت paginate کردن، کوئری نمیزنه به دیتابیس. به طور مثال:
return Datatables::of($users)
->setTotalRecords(100)
->make(true);
حالا توی لاراول ما چطوری میتونیم این تعداد رکورد رو به صورت داینامیک بهش بدیم که خودمون هم نیاز نباشه به دیتابیس کوئری بزنیم؟