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

حامد پاکدامن

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

You may also like...

6 Responses

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

    سلام
    وقت بخیر
    این خیلی خوب هست که می توانیم این طوری از 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);

  3. امیر says:

    چرا برای این موارد از join استفاده نمیشه؟

  4. لاراول says:

    ممنون بابت مقاله.
    لطفا درمورد تکنیک های روتینگ و تکنیکهای کار با کنترلر ها هم بنویسید.
    من همش بصورت استاتیک با کنترلر ها کار میکنم و مجبورم الکی صد خط کد بنویسم در صورتی که به نظرم اگه یکم بیشتر بلد بودم مجبور نبودم برای کار های ساده الکی کلی کد بنویسم.

Leave a Reply

Your email address will not be published. Required fields are marked *

*