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

$posts = User::with('comments')->get();

اما اگه بخوایم اون رابطه رو فیلتر کنیم (مثلا ستون‌های خاصی رو انتخاب کنیم)  می‌تونیم از روش‌های زیر استفاده کنیم.

 

روش اول: با Eager Loading

$users = User::with(['comments' => function($query) {
    $query->select('id', 'user_id', 'text');
}])->get();

 

روش دوم: با Lazy Loading

$user = User::find(1);

$comments = $user->comments()->select('id', 'user_id', 'text')->get();

 

برای آشنایی با Eager Loading و Lazy Loading می‌تونید سوال ۳۹ و ۴۰ سوالات مصاحبه لاراول رو بخونید:

منبع: