توسعه دهنده نرم افزار

Eager Loading چطور در لاراول استفاده کنیم

به صورت معمولی اگر شما یک رابطه در مدل Flat داشته باشید که به جدول دیگر رابطه یک به یک داشته باشید hasOne به شکل زیر میتوان از ان استفاده کرد

$cars = App\Flat::all();
 
    foreach ($flats as $flat) {
      echo $flat->owner->name;
    }

در روش فوق به ازای هر لوپ یکبار به جدول owner ارجاع میکند یعنی اگر ۱۰۰ تا رکورد باشد ۱۰۰ بار لوپ اجرا میشود و ۱۰۱ بار به دیتابیس کانکت میشوید تا مقادیر رابطه hasOne در sql اجرا میشود .

روش بهتر استفاده از eager loading است

$flats = App\Flat::with('owner')->get();
 
    foreach ($flats as $flat) {
      echo $flat->owner->name;
    }

در روش فوق به نوعی به جدول owner join زده شده و در هر لوپ از مقادیری که در select اول داشته ایم استفاده میشود در واقع ۱۰۰ بار لوپ اجرا میشود و یکبار هم به دیتابیس متصل میشود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.