Laravel雄辩关系查询不起作用
问题描述:
我想获得所有测验与具有包含主题的course_id
:Laravel雄辩关系查询不起作用
的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();
有没有办法让主题没有循环?我想马上获得测验列表? – Valentine
这不是你所要求的:p你想要一个包含课程ID的主题的所有测验的列表是真的吗? – Maraboc
是的,这就是我想要的。有什么想法? – Valentine