这是可能的:hasManyThrough通过hasManyThrough?
问题描述:
这可能吗?这是可能的:hasManyThrough通过hasManyThrough?
考虑这个假设的关系,例如:
一个城市有很多的学校。一所学校有很多老师。一位老师有很多学生。一名学生有很多作业。
随着hasManyThrough,我可以得到所有从城市
public function students() {
return $this->hasManyThrough(Student::class, Teacher::class);
}
学生,而且将有可能得到所有从城市分配?
我想这两个没有运气:
// City model
public function assignments() {
return $this->hasManyThrough(Assignment::class, Student::class);
}
(抱怨有没有被用于市学生外键)
和:
// City model
public function assignments() {
return $this->hasManyThrough(Assignment::class, $this->students());
}
(致命错误)
或者,如果这种关系是不可能在口才模型,你将如何去从一个城市检索所有任务的最佳途径?我的最终目标是让基于一个城市的任务集合,但是这样可以实现。
答
我觉得你可以逆向操作来解决这个问题:
return Assignment::whereHas('students', function($q){
return $q->whereHas('teacher', function($q){
return $q->whereHas('school', function($q){
return $q->where('city', $this->id);
});
});
});
像这样的东西“之类的”作品,但是它包含了所有的学生和他们的任务(如果有的话)。我在寻找刚分配的集合:$都市>学生() - >与(“分配”) - >获得(); –