具有约束的多态嵌套预先加载

时间:2017-07-25 12:13:47

标签: laravel

我有这个课程:

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关系类是否存在一些问题,或者我做错了什么因为我之前从未使用过这种多态类

0 个答案:

没有答案