2017-10-12 82 views
1

我想獲得所有測驗與具有包含主題的course_idLaravel雄辯關係查詢不起作用

Topic模式具有以下功能:

public function quizzes() 
{ 
    return $this->hasMany('App\Quiz'); 
} 

測驗模型具有以下功能:

public function topic() 
{ 
    return $this->belongsTo('App\Topic', 'topic_id'); 
} 

這是在我的控制器功能代碼:

$topics = Topic::with('quizzes')->whereCourseId($course_id)->orderBy('created_at', 'asc')->get(); 

return dd($topics->quizzes); 

我得到以下Exception錯誤:

Property [quizzes] does not exist on this collection instance. 

我好像不知道發生了什麼?

回答

1

這是因爲你想在這個集合這樣獲得集合quizzes不是一個模型,以便循環:

foreach ($topics as $topic) { 
    $topics->quizzes; // <- this is fine :) 
} 

用於調試目的,你可以做這樣的:

dd($topics->fist()->quizzes); 

第二個需要你可以這樣做:

$quizzes = Quizzes::whereHas('topic', function ($query) use ($course_id) { 
     $query->where('course_id', $course_id); 
    })->get(); 
+0

有沒有辦法讓主題沒有循環?我想馬上獲得測驗列表? – Valentine

+0

這不是你所要求的:p你想要一個包含課程ID的主題的所有測驗的列表是真的嗎? – Maraboc

+0

是的,這就是我想要的。有什麼想法? – Valentine