2017-04-05 61 views
0

这可能吗?这是可能的: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()); 
} 

(致命错误)

或者,如果这种关系是不可能在口才模型,你将如何去从一个城市检索所有任务的最佳途径?我的最终目标是让基于一个城市的任务集合,但是这样可以实现。

+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); 
     }); 
    }); 
});