Eager loading در لاراول چیست



visibility  
mode_comment   ۰

یکی از کاربردی ترین امکاناتی که در فریم ورک لاراول وجود دارد، ویژگی Eager loading در لاراول است. این ویژگی یکی از ویژگی های فوق العاده در فریم ورک لاراول است که استفاده های بسیار زیادی را می توان از آن کرد. در ادامه برخی از ویژگی های این ابزار قدرتمند و همینطور نحوه ی استفاده از آن را توضیح خواهیم داد تا بتوانید با یادگیری این مفهوم بسیار ارزشمند در برنامه نویسی وب با استفاده از فریم ورک لاراول برنامه هایی بسیار قدرتمند را طراحی کنید که دچار مشکلاتی از قبیل مشکل N+1 نشود.

چرا برنامه نویسان از Eager loading در برنامه نویسی استفاده نمی کنند؟

شاید یکی از مهم ترین سؤالاتی که برای شما پیش آمده باشد این است که چرا برنامه نویسان معدودی از امکان Eager loading در لاراول استفاده می کنند؟ همانطور که می دانید یکی از غنی ترین منابعی که برای یادگیری فریم ورک لاراول وجود دارد، سایت اصلی این فریم ورک می باشد که بسیاری از برنامه نویسانی که از این فریم ورک برای برنامه نویسی استفاده می کنند برنامه نویسی با فریم ورک لاراول را از این سایت یاد می گیرند. اما در سایت اصلی فریم ورک لاراول توضیحات چندانی راجع به Eager loading در لاراول داده نشده است. به همین علت بسیاری از برنامه نویسان نتوانسته اند این موضوع را درک کنند و همین عامل باعث شده است که لزوم یادگیری و استفاده از آن را در برنامه هایی که می نویسند درک نکنند، به همین علت در این مطلب قصد داریم توضیحاتی راجع به استفاده از این ابزار را ارائه دهیم.

 Eager loading در لاراول

خطای معمولی N+1 چیست؟

قبل از این که بخواهیم در رابطه با Eager loading در لاراول صحبت کنیم بهتر است با خطای معمولی N+1 آشنا شویم. یکی از معمول ترین خطاها در حین برنامه نویسی با فریم ورک لاراول، خطای N+1 می باشد. این خطا زمانی رخ می دهد که برنامه نویس یک رکورد مشخص را واکشی کرده و به دنبال آن فریم ورک لاراول خود به خود N کوئری را به اجرا در می آورد که دلیل این کار این است که فریم ورک لاراول قصد دارد رابطه های بین جدول ها را از روی بانک اطلاعاتی به اجرا در بیاورد. در ادامه قصد داریم یک مثال واضح و آسان درباره ی این موضوع ارائه دهیم که کاملاً متوجه این موضوع شوید.

 Eager loading در لاراول

مثالی برای خطای N+1

فرض کنید در طول برنامه نویسی با فریم ورک لاراول دو جدول را ایجاد کرده اید، جدول اولی با نام students و جدول دومی با نام books فیکس شده است، رابطه ای که بین این دو جدول وجود دارد به این صورت است که هر دانش آموز می تواند چند کتاب داشته باشد. همانطور که می دانید برای این کار تنها کافی است یک مدل برای students و یک مدل نیز برای book ایجاد کنید:

حال برای دریافت اطلاعات تنها کافی است کدهای زیر را وارد کنید:

متخصص وردپرس
قالب ها و پلاگین های حرفه ای وردپرس رو خودت بنویس! بازار طراحی قالب و پلاگین نویسی وردپرس به شدت داغه و اگر بلد باشید با برنامه نویسی اختصاصی، قالب ها و پلاگین های دلخواه بنویسید تو مارکت های مطرح دنیا و یا از طریق فریلنسری می تونید به درآمد بالا برید. دوره متخصص وردپرس سون لرن رو حتما ببینید: متخصص وردپرس arrow_back

همانطور که مشاهده می کنید در این مثال تمامی اطلاعات دانش آموزان دریافت می شود و بعد از آن N کوئری دیگر نیز اطلاعات کتاب ها را به صورت تک تک دریافت می کنند که این در واقع همان خطای N+1 است که در صورت بزرگ بودن جداول می تواند وب سایت شما را به خطر بیندازد. در ادامه به بررسی یک روش بسیار جالب که همان استفاده از Eager loading در لاراول می باشد خواهیم پرداخت تا بتوانید این مشکل را حل کنید.

 Eager loading در لاراول

Eager loading در لاراول چیست؟

Eager loading  در لاراول در واقع راه حلی بسیار مناسب برای از بین بردن خطای N+1 در برنامه نویسی با فریم ورک لاراول می باشد. در واقع Eager loading در لاراول راه حلی بسیار مناسب را به شما پیشنهاد می دهد که به کمک آن می توانید خطای N+1 را که در مثال قبلی توضیح دادیم حل کنید. برای این که بهتر با مفهوم Eager loading در لاراول آشنا شوید بهتر است این مفهوم را نیز به یک مثال به صورت کامل توضیح دهیم.

 Eager loading در لاراول

یک مثال از Eager Loading در لاراول

در این مطلب قصد داریم مثالی را برای این مورد ارائه دهیم:

همانطور که می دانید لاراول با استفاده از دستور with متوجه می شود که باید به صورت همزمان اطلاعات را از لیستی که نام دانش آموزان در آن قرار دارد دریافت کرده و به نمایش در بیاورد، از آن جایی که لاراول دارای معماری ORM می باشد، تنها دو کوئری را دریافت می کند. همانطور که می توانید در این مورد مشاهده کنید، استفاده از Eager loading  در لاراول روش بسیار بهینه تری نسبت به سایر روش هایی که یکی از آن ها را در قسمت قبلی بیان کردیم می باشد.

 Eager loading در لاراول

لود کردن روابط بیشتر با Eager loading در لاراول

فرض کنید که می خواهید که از اطلاعات تمامی کلاس هایی که یک دانش آموزان خاص در آن قرار دارد باخبر شوید. در این صورت می توان قطعه کد زیر را برای این کار نوشت:

نکته بسیار جالبی که باید بدانید این است که از رابطه های تو در تو نیز می توانید در این قطعه کد به راحتی استفاده کنید، همچنین ویژگی فوق العاده دیگر Eager loading در لاراول این است که می توانید Eager loading  در لاراول را به همراه شرط ها نیز به کار ببرید و برنامه های بسیار پیشرفته ای را بنویسید.

 Eager loading در لاراول

نکات پایانی درباره ابزار Eager loading در لاراول

بعد از این که با مفهوم Eager loading  در لاراول آشنا شدید، بهتر است از این امکان و ابزار فوق العاده ای که در فریم ورک لاراول برای شما فراهم شده است بیشتر استفاده کنید تا برنامه هایی بسیار کارآمد را طراحی کنید. در واقع شما تا به امروز به دلیل این که با این مفهوم آشنایی کاملی نداشتید، نمی توانستید از آن در برنامه های خود استفاده کنید به همین دلیل برنامه ها و اپلیکیشن هایی که به وسیله ی لاراول طراحی می کنید دچار مشکلاتی می شوند که یکی از مهم ترین این مشکلات را می توان همان مشکل معروف N+1 در لاراول دانست. حال که با مفهوم Eager loading در فریم ورک لاراول آشنا شدید می توانید به راحتی این مشکلات را حل کنید.

comment دیدگاه کاربران

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.