کارایی بالا Cursor Pagination در لاراول 8.41

لاراول در نسخه 8.41 با چند تغییر خوب و کاربردی همراه بود. تغییراتی مثل صفحه بندی جدید Cursor Pagination، یه روش جدید برای بروزرسانی بی‌صدا مدل‌ها و یه متد جدید برای کار با استرینگ‌ها رو داخل این نسخه ارائه داده که در ادامه به هر کدوم از این موارد میپردازیم.

 

صفحه بندی Cursor Pagination

آقای Paras Malhotra برای پیاده سازی cursor pagination یا صفحه بندی مکان نما کمک زیادی کرده. مستندات لاراول توضیحات خوبی درباره این صفحه بندی جدید نسبت به بقیه روش‌های صفحه بندی داده:

Cursor Pagination با استفاده از دستور where مقادیر ستون های مرتب شده‌ی کوئری درخواستی رو با هم مقایسه میکنه و بهترین عملکرد از نظر پایگاه داده رو در بین تمام روش‌های صفحه بندی لاراول ارائه میده. این روش صفحه بندی برای دیتابیس های بزرگ که دیتای زیادی دارن و یا پروژه هایی که نیاز به اسکرول بینهایت دارن مناسبه.

برخلاف صفحه بندی مبتنی بر آفست، که شماره صفحه با استفاده از کوئری استرینگ از url های تولید شده پاس داده میشه و اطلاعات صفحه بعد نمایش داده میشه، این روش مقدار مکان نما رو به رشته تبدیل میکنه و برای درخواست صفحه بعد استفاده میکنه.

Cursor Pagination مشکلات تکثیر موجود در صفحه بندی بر حسب آفست رو حل میکنه. این عمل روی پیاده سازی اسکرول بینهایت و استفاده از API تاثیر میزاره. صفحه بندی مکان نما با داده های بزرگ میتونه کارآمد تر و بهتر عمل کنه.

براتون یه مثال ظاهری از دستورش میزنم:

$users = User::orderBy('id')->cursorPaginate(10);

با توجه به درخواست صفحه بندی بالا که برای ۱۰ رکورد از جدول کاربران زده شده، نتیجه زیر برامون برگشت داده میشه:

{
  "data": [
    {
      "id": 1,
      "name": "Ali Rahimi",
      "email": "alirahimi818@gmail.com",
      "email_verified_at": "2021-05-15T21:11:16.000000Z",
      "created_at": "2021-05-15T21:11:16.000000Z",
      "updated_at": "2021-05-15T21:11:16.000000Z"
    },
    {
      "id": 2,
      "name": "Ali Rahimi 2.",
      "email": "alirahimi818@example.com",
      "email_verified_at": "2021-05-15T21:11:16.000000Z",
      "created_at": "2021-05-15T21:11:16.000000Z",
      "updated_at": "2021-05-15T21:11:16.000000Z"
    },
    {...}
  ],
  "path": "http://localhost:8000/users",
  "per_page": 10,
  "next_page_url": "http://localhost:8000/users?cursor=eyJpZCI6MTAsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
  "prev_page_url": null
}

همونطور که دیدید، نمیتونیم با کوئری استرینگ page=2 مبتنی بر آفست به صفحه بعد بریم. برای اینکه بتونیم به صفحه بعدی نتایج بریم باید از پارامتر next_page_url که بهمون داده شده استفاده کنیم.

 

بروزرسانی بی‌صدا مدل‌ها – Model Quietly

یه روش جالب برای به روزرسانی مدل ها هستش. مثل آپدیت کردن عمل میکنه ولی هیچ رویدادی (event) اتفاق نمیفته! به همین خاطر اسمشو گذاشتن مدل بی سر و صدا:

// `updateQuietly` works like `update()` but without raising events

$user->updateQuietly(['email' => 'alirahimi818@gmail.com']);

 

جایگزین کردن در رشته ها – Str Replace

این امکان قبلا هم وجود داشته ولی الان ساده شده. الان میتونید برای جایگزین کردن در یک رشته مستقیم از Str::replace() در کلاس های Str و Stringable استفاده کنین:

use Illuminate\Support\Str;

Str::replace('dead', 'alive', 'PHP is dead');
/* PHP is alive */

Str::of('PHP is dead')->replace('dead', 'alive');
/*
Illuminate\Support\Stringable {#4091
    value: "PHP is alive",
}
*/

 

 

شما میتونید لیست تغییرات این ریلیز (8.41) رو در گیت هاب لاراول مشاهده کنید.

منبع: https://laravel-news.com/cursor-pagination

 

 

مطالب مرتبط پیشنهادی
نظر خود را ارسال کنید

آدرس ایمیل شما منتشر نخواهد شد.

*

code