很抱歉标题太乱了,我不知道该如何描述它。所以我得到了三个表tables in re model:学生,组,以及与它们相关的称为课程的表。
我正在尝试获取每个没有分配组的“学生”,或者分配了一个大于2019年的组的“学生”,到目前为止,我得到了这个代码,但我无法访问年份列,我尝试了" with ()“方法,但我没有得到任何幸运,有什么想法吗?我在laravel上的模型:
学生:
public function courses()
{
return $this->hasMany(\App\Models\Course::class, 'id_student');
}组:
public function courses()
{
return $this->hasMany(\App\Models\Course::class, 'id_group');
}课程:
public function student()
{
return $this->belongsTo(\App\Models\Student::class, 'id_student');
}
public function group()
{
return $this->belongsTo(\App\Models\Group::class, 'id_group');
}我的问题是:
$students_noassigned = Student::whereHas('courses', function ($query) {
$query->where('year', '>', 2010);
})
->doesntHave('courses', 'or')
->get();发布于 2019-11-07 15:22:22
如果您不想通过pivot在学生和组(属于多个)之间直接设置关系,您可以尝试以下操作:
$students_noassigned = Student::whereHas('courses.group', function ($query) {
$query->where('year', '>', 2010);
})->orDoesntHave('courses')->get();获取课程组为year > 2010的学生,或者没有任何课程,没有分配组的学生。
https://stackoverflow.com/questions/58743699
复制相似问题