Laravel在一个集合/数组中获取所有相关模型


Laravel get all related models in one collection/array

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模型的请求来完成它?

基于学生进行查询并加入类?

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是关联表