راکت
حل شده

اموزش ساخت lazy loadدر لاراول

4 پاسخ

@davoodkhany
@ali.bayat
میشه یه آموزش lazy load درلاراول رو معرفی کنید که ساده باشه

ثبت پرسش جدید

پاسخ‌ها

4
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بهترین پاسخ

به صورت پیش فرض ... دسترسی به داده ها در الکوئنت "Lazy loaded" هست.

یعنی وقتی از الکوئنت به شکل زیر استفاده میکنی:

$posts = Post:all();

کوئری که لاراول میسازه به این شکله:

select * from `posts`

حالا فرض کن این مدل پست یه رابطه (Relationship) از نوع belongsTo داره به مدل Category ..

  • هر Category میتونه چندین پست داشته باشه. (hasMany)
  • هر پست متعلق به یک Category هست. (belongsTo)
foreach ($posts as $post) {
    echo $post->category->name; // لیزی لود همینه 
}

مشکل این لیزی لود اینه که.. به ازای هر یک پست که در دیتابیس وجود داره یک کوئری بوجود میاد. مثلا اگر ۴۰ تا پست توی جدول داشته باشیم: تعداد کوئری که با همون یک خط بالا بوجود میاد برابر با ۴۰ + ۱ هست.

به این داستان مشکل N + 1 هم میگن.
برای همین توصیه میشه به جای اینکار (استفاده از لیزی لودینگ) از Eager-Loading استفاده بشه..

ftp
ftp
@ftp

تخصص: ساده

@ali.bayat
اون Eager-Loading چطوریه ؟

شاید پاسخ شما همین‌جا باشد

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام