有可能吗?
考虑这种假设的关系,例如:
一个城市有很多学校。一所学校有很多老师。老师有很多学生。学生有很多作业。
通过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());
}
(致命错误)
或者,如果在Eloquent模型中无法实现这种类型的关系,那么您将如何以最佳方式从城市中检索所有分配?我的最终目标是根据城市获得一系列作业,所以无论如何都可以实现。
答案 0 :(得分:0)
我认为你可以倒退来解决这个问题:
return Assignment::whereHas('students', function($q){
return $q->whereHas('teacher', function($q){
return $q->whereHas('school', function($q){
return $q->where('city', $this->id);
});
});
});