我有学生表、个人资料表、科目和数据透视表profile_subject
-students---------{id,profile_id,year}
-profiles---------{id}
-profile_subject--{profile_id,subject_id,年}
-主题---------{id}
我想选择一个 ID 为 5 的学生,以及学生年份的热切负载配置文件和科目。
像这样:
$student = Student::with('profile','profile.subjects')->find(5);
但我也必须插入条件
->wherePivot('year','=','students.year')
那里的某个地方。怎么做? 此查询不会执行工作,因为它将搜索"学生.年份"文学的记录
使用惰性急切加载。此代码不会创建任何其他查询,它将创建与with()
相同的查询数量:
$student = Student::find(5);
$sudent->load(['profile', 'profile.subjects' => function ($q) use ($student) {
$q->wherePivot('year', $student->year);
}]);