Eager loading و ضرورت استفاده از آن در لاراول

حامد پاکدامن

آموختن مهارت ها ، ارتقاء سطح علمی و نشر دانسته ها باید از مهمترین اهداف جوامع برنامه نویسی باشد ... حدود 10 سالی است که به صورت تخصصی با php برنامه نویسی میکنم. توسعه فریمورک لاراول از بهترین علایق من هست .

مطالب جذابی که ممکن است علاقه داشته باشید...

4 پاسخ

  1. علی قاسم زاده می‌گه:

    سلام
    وقت بخیر
    این خیلی خوب هست که می توانیم این طوری از N+1 جلوگیری کنیم ولی چرا به صورت خودکار JOIN نمی کند بعضی وقت ها JOIN سریع تر کار می کند.

  2. ثبت شرکت می‌گه:

    با سلام و احترام خدمت شما آقای پاکدامن عزیز 🙂

    مقاله ی مفیدی بود و استفاده کردم .
    یک سوال برام بوجود اومده :

    من درون یکی از پروژه هام از مثال مشابهی که بالا توضیح دادین ، استفاده کردم ولی یک مشکل خیلی بزرگ دارم
    چطور میشه دیتای خروجی از Eager Loading رو صفحه بندی کرد ؟

    خروجی من رکوردهای فوق العاده زیادی داره و از طرف دیگه دارم این این دیتا درون اپلیکیشن اندرویدی ( API ) استفاده میکنم و مشکلی که الان بهش برخورد کردم ، باعث شده سرعت اپلیکیشن تا حد خیلی خیلی زیادی کم بشه !

    • با سلام . صفحه بندی کردن در Eager Loading طبق روش معمول لاراول انجام میشه و در حقیقت سوال شما اینطور باید مطرح بشه که چطور میتونم دیتای خروجی برای API رو صفحه بندی کنم . خب تقریبا میتونم بگم این هم روش سختی نیست فقط کافیه پارامتر شماره صفحه با نام page به درخواستون اضافه کنید . مثلا :
      site.com/api/posts?page=2

      و برای نمایش های رکورد ها هم میتونید این کار رو کنید :

      $products = Product::paginate(100);
      $response = [
      'products' => $products->getItems()->toArray(),
      'pagination' => [
      'total' => $products->getTotal(),
      'per_page' => $products->getPerPage(),
      'current_page' => $products->getCurrentPage(),
      'last_page' => $products->getLastPage(),
      'from' => $products->getFrom(),
      'to' => $products->getTo()
      ]
      ];

      return Response::json($response);

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *