我有这个课程:
students-----{id,profile_id,year}
profiles-----{id}
subjects-----{id}-is learnable
groupsSbj-----{id}-is learnable
learnables----{profile_id,learnable_id,learnable_type,year}
groupssbj_subject--{subject_id,groupsbj_id}
我想加载一个id为5的学生,以及它的个人资料,以及该学习资料的学习情况,其中learnables.year = student.year 我加入延迟加载
$student = Student::find(5);
$student->load(['profile.subjects'=>function($query) use($student){
$query->wherePivot('year','=',$student->year);
}],['profile.groupsSbj'=>function($query) use($student){
$query->wherePivot('year','=',$student->year);
}],'profile.groupsSbj.subjects');
如果我打电话给 $ student.profile.subjects ,我会获得约束的主题,但 $ student.profile.groupsSbj 的组不受限制,如果我将其分开两个负载
$student = Student::find(5);
$student->load(['profile.subjects'=>function($query) use($student){
$query->wherePivot('year','=',$student->year);
}]);
$student->load(['profile.groupsSbj'=>function($query) use($student){
$query->wherePivot('year','=',$student->year);
}],'profile.groupsSbj.subjects');
然后群体受到限制但受试者没有受到限制,这意味着他们全部被加载。我可以通过再次编写查询来约束它们,但我只是好奇为什么它会像那样? laravel关系类是否存在一些问题,或者我做错了什么因为我之前从未使用过这种多态类