在急切加载中提供额外条件,包括比较两列,laravel

时间:2017-07-24 13:36:07

标签: laravel relationships

我有表学生,个人资料,主题和数据透视表profile_subject

-students --------- {ID,PROFILE_ID,年}

-profiles --------- {ID}

-profile_subject - {PROFILE_ID,subject_id,年}

-subjects --------- {ID}

我想选择一个身份5的学生,以及学生一年的急切负荷情况和科目。

这样的事情:

$student = Student::with('profile','profile.subjects')->find(5);

但我也必须插入条件

->wherePivot('year','=','students.year')
某个地方。怎么做? 这个查询不会完成工作,因为它会搜索哪些年份为“students.year”文学作品的记录

1 个答案:

答案 0 :(得分:1)

使用lazy eager loading。此代码不会创建任何其他查询,它会创建与with()相同数量的查询:

$student = Student::find(5);
$sudent->load(['profile', 'profile.subjects' => function ($q) use ($student) {
    $q->wherePivot('year', $student->year);
}]);