我有表学生,个人资料,主题和数据透视表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”文学作品的记录
答案 0 :(得分:1)
使用lazy eager loading。此代码不会创建任何其他查询,它会创建与with()
相同数量的查询:
$student = Student::find(5);
$sudent->load(['profile', 'profile.subjects' => function ($q) use ($student) {
$q->wherePivot('year', $student->year);
}]);