Laravel雄辩关系查询不起作用

问题描述:

我想获得所有测验与具有包含主题的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. 

我好像不知道发生了什么?

这是因为你想在这个集合这样获得集合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