Laravel 8 通过三个链接模型进行计数
Laravel 8 getting count through three linked models
我有一个简单的 laravel 8 设置,包含三个模型:
- 学生,属于一个专业并且有很多组
- 专业,有很多学生,并且
- 组,有很多学生。
组有一个“course_year”列,它是 1 到 7 之间的整数,包括。
我正在创建一个索引页面来列出所有专业,我想显示每年的学生人数。
这里有一个问题 - 因为学生可以属于多个组,一些组可以属于不同的课程年,我需要计算,但他们也可以属于同一年的几个组,我不知道'想数数。
结果应该是在 course_year 的所有组中招募的个别学生的数量,无论他们是否与另一个 course_year 一起入组。
感谢所有的见解!
感谢 ZarkDev 将我指向文档中的正确位置。有点想知道他们周围。我终于在我的主要模型中做到了这一点,并且有效:
public function students_major_count($major_id, $course_year) {
$students = Student::withCount([
'groups' => function ($query) use ($course_year) {
$query->where('course', $course_year);
}
])->where('major_id', $major_id)->get();
return $students->where('groups_count', '>', 0)->count();
}
通过这种方式,我对每个 course_year.
中每个参加任意数量小组的学生只计算一次
我很高兴听到关于优化它的任何其他建议,但它运行良好。
我有一个简单的 laravel 8 设置,包含三个模型:
- 学生,属于一个专业并且有很多组
- 专业,有很多学生,并且
- 组,有很多学生。
组有一个“course_year”列,它是 1 到 7 之间的整数,包括。 我正在创建一个索引页面来列出所有专业,我想显示每年的学生人数。
这里有一个问题 - 因为学生可以属于多个组,一些组可以属于不同的课程年,我需要计算,但他们也可以属于同一年的几个组,我不知道'想数数。
结果应该是在 course_year 的所有组中招募的个别学生的数量,无论他们是否与另一个 course_year 一起入组。
感谢所有的见解!
感谢 ZarkDev 将我指向文档中的正确位置。有点想知道他们周围。我终于在我的主要模型中做到了这一点,并且有效:
public function students_major_count($major_id, $course_year) {
$students = Student::withCount([
'groups' => function ($query) use ($course_year) {
$query->where('course', $course_year);
}
])->where('major_id', $major_id)->get();
return $students->where('groups_count', '>', 0)->count();
}
通过这种方式,我对每个 course_year.
中每个参加任意数量小组的学生只计算一次我很高兴听到关于优化它的任何其他建议,但它运行良好。