مقدمهای بر قابلیت Pagination در لاراول ۱۱
توی لاراول، Pagination یا صفحهبندی به ما کمک میکنه که دادهها رو به صورت منظم و صفحهبهصفحه نمایش بدیم. به طور کلی، وقتی اطلاعات زیادی داریم، نمایش همهشون روی یک صفحه میتواند کاربر رو سردرگم کنه. به همین دلیل صفحهبندی خیلی مهمه. در لاراول نسخه ۱۱، علاوه بر روشهای معمول برای صفحهبندی، رویکرد جدیدتری به نام CursorPaginator هم معرفی شده که توی این مطلب بهش میپردازیم.
CursorPaginator به طور خاص برای صفحاتی طراحی شده که میخواهیم مجموعهای بزرگ از دادهها رو با سرعت و کارایی بالا نمایش بدیم. توی این روش به جای استفاده از offset و limit برای صفحهبندی، از یک سطر مرجع به نام «کرسر» استفاده میکنیم. این رویکرد به ما کمک میکنه که دادههای پراکنده رو به صورت بهتر مدیریت کنیم و به سادگی به سطرهای بعدی دسترسی داشته باشیم.
استفاده از CursorPaginator در لاراول خیلی راحت و سریع است. فقط کافی است که چند خط کد ساده بنویسید و با استفاده از قابلیتهای خود لاراول، به سرعت دادهها رو صفحهبندی کنید. به همین خاطر، این قابلیت برای تمام پروژههایی که نیاز به نمایش دادههای زیاد دارند، یکی از بهترین گزینههاست.
برای استفاده از CursorPaginator، شما ابتدا باید دادهها رو از دیتابیس بخونید و بعد با استفاده از این کلاس، اونها رو صفحهبندی کنید. در این مقاله، چند مثال کاربردی براتون آوردهام که بتونید به راحتی این قابلیت رو در پروژههای خودتون پیادهسازی کنید.
نحوه استفاده از CursorPaginator در لاراول ۱۱
use App\Models\Post;
use Illuminate\Pagination\CursorPaginator;
$posts = Post::orderBy('created_at', 'desc')->cursorPaginate(10);
return view('posts.index', compact('posts'));
توضیحات کد:
use App\Models\Post;
این خط ما مدل «پست» رو به فایل فعلی وارد میکنه تا بتونیم ازش استفاده کنیم.
use Illuminate\Pagination\CursorPaginator;
اینجا ما کلاس CursorPaginator رو هم وارد میکنیم تا بتونیم از قابلیتهای صفحهبندی استفاده کنیم.
$posts = Post::orderBy('created_at', 'desc')->cursorPaginate(10);
این خط دادهها رو از دیتابیس میخونه، اونها رو بر اساس زمان ایجاد (created_at) مرتب میکنه و سپس تا ۱۰ مورد اول رو صفحهبندی میکنه.
return view('posts.index', compact('posts'));
در نهایت، نتیجه رو به ویو «posts.index» منتقل میکنیم تا بتونیم اونها رو نمایش بدیم.