به صورت معمولی اگر شما یک رابطه در مدل 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 اول داشته ایم استفاده میشود در واقع ۱۰۰ بار لوپ اجرا میشود و یکبار هم به دیتابیس متصل میشود.