Laravel 4
有没有简单的方法可以在一个集合中获取所有相关模型(仅限Eloquent)?
例如,我希望得到所有与许多课程相关的学生:
首先,我需要获得一个关系集合:
$classes = Class::with('students')->whereIn('code', ['A', 'B'])->get();
然后我需要通过整个集合来合并学生:
$allStudents = new Collection;
foreach ($classes as $class) {
$allStudents = $allStudents->merge($class->students);
}
或者,如果我只需要一个密钥,例如学生的id
,我就是这样做的:
$allStudentsIds = [];
foreach ($classes->fetch('students') as $studentsArray) {
$allStudentsIds = array_merge(
$allStudentsIds, array_pluck($studentsArray, 'id')
);
}
是否有方法只能获得相关模型?或者不知怎的,我可以通过Student
模型的请求来实现它?
答案 0 :(得分:0)
根据学生查询并加入课程?
Student::select('student.*')
->join('class_student', 'class_student.student_id', '=', 'student.id')
->join('class', 'class.id', '=', 'class_student.class_id')
->whereIn('class.id', $classes)
->get();
类似的东西。
我认为它是多对多关系,class_student是关联表