ftp
5 سال پیش توسط ftp مطرح شد
4 پاسخ

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

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


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

به صورت پیش فرض ... دسترسی به داده ها در الکوئنت "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 استفاده بشه..


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
ftp
تخصص : ساده
@ftp 5 سال پیش آپدیت شد
0

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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد

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

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