这可能吗:hasManyTh through hasManyThrough?

时间:2017-04-05 16:23:33

标签: laravel eloquent laravel-5.4

有可能吗?

考虑这种假设的关系,例如:

一个城市有很多学校。一所学校有很多老师。老师有很多学生。学生有很多作业。

通过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模型中无法实现这种类型的关系,那么您将如何以最佳方式从城市中检索所有分配?我的最终目标是根据城市获得一系列作业,所以无论如何都可以实现。

1 个答案:

答案 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);
        });
    });
});
相关问题