2017-04-05 80 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); 
     }); 
    }); 
});