我有一个包含学期,课程和作业的项目。
我想只获得至少有一门课程与之相关的学期,所以我这样做了:
Semester::has('courses', '>', '0')->get();
现在,我希望学期至少有一门课程至少有一个与之相关的作业。
在学期课程中,我与课程有hasMany
的关系,而在课程中,我与作业有hasMany
的关系。我还有belongsTo
课程和课程分配。
我试过查找闭包,但没有一个教程似乎与检查集合的集合有关。我该如何运行此代码?
在阅读和测试更多内容后,我发现此代码有效:
Semester::whereHas('courses', function ($query) {
$query->has('assignments', '>', '0')
})->get();
huuuk的回答是一种不同的方法,但同样有效且有帮助。
答案 0 :(得分:0)
首先在hasManyThrough
类
Semetster
relation
public function assignments()
{
return $this->hasManyThrough('App\Course', 'App\Assignment');
}
那么你就可以达到你的目标
Semester::has('assignments', '>=', '1')->get();