0
我有以下關係:雄辯與條款嵌套在中間關係
- 用戶[多到多用]分配
- 分配[多到多用]徽章
- 的assignment_user透視表有一個標誌「is_finished」我需要是真實的
這些都是我在匹配模式的關係:
user.php的
public function assignments()
{
return $this->belongsToMany('Assignment')->withPivot('is_finished')->withTimestamps();
}
Assignment.php
public function badges()
{
return $this->belongsToMany('Badge', 'badge_assignment')->withTimestamps();
}
Badge.php
public function assignments()
{
return $this->belongsToMany('Assignment', 'badge_assignment')->withTimestamps();
}
我試圖讓所有的徽章我的用戶完成分配。這是我的查詢:
$user = User::with(array(
'assignments' => function($query) {
$query->where('is_finished', '=', true)->orderBy('updated_at', 'desc');
})
)
->with('badges')
->username($name)->first();
然而,這是渲染錯誤「調用未定義的方法照亮\數據庫\查詢\生成器::徽章()」當我使用的foreach($用戶> assignments->徽章。 ..)。
然後我試圖讓第一與範圍內的徽章,但我不知道如何到達is_finished:
$user = User::with(array(
'assignments.badges' => function($query) {
$query->where('is_finished', '=', true)->orderBy('updated_at', 'desc');
})
)
->username($name)->first();
有了這個,我得到「未找到列」,這是因爲查詢在徽章內尋找is_finished,而不是assign_user關係。
當我有這個問題我想這只是可以肯定的:
User::with('assignments.badges')->whereUsername($username);
...,我仍然得到「未定義的屬性:照亮\數據庫\雄辯\收藏:: $徽章」 。
我在做什麼錯?
呈現相同的錯誤我的第三個(簡單)的嘗試:「未定義的屬性:照亮\數據庫\雄辯\收藏:: $徽章」 。 僅供參考,我從查詢中獲取結果後,在我的視圖中使用$ user-> assignments->徽章。 – Anonymous 2014-09-23 11:42:33
我不這麼認爲。你可能試圖調用這樣的東西:'$ user-> assignments-> badges',它顯然會拋出這個錯誤。對於渴望加載本身,我的代碼是要走的路,相信我。那麼,是的,你當然不能這樣做 - 你想在模型的集合中獲取'模型'關係 - 例如你需要一個foreach循環。 – 2014-09-23 11:44:48
傻了,當然你是對的。我是愚蠢的,試圖獲取徽章,而不需要爲每個任務運行第二個循環。非常感謝快速解決方案! – Anonymous 2014-09-23 11:47:53