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

时间:2016-03-23 08:35:55

标签: php laravel laravel-4 orm eloquent

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

1 个答案:

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