【问题标题】:Laravel get all related models in one collection/arrayLaravel 在一个集合/数组中获取所有相关模型
【发布时间】:2016-07-10 10:52:22
【问题描述】:

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 模型的请求以某种方式实现它?

【问题讨论】:

    标签: php laravel laravel-4 orm eloquent


    【解决方案1】:

    根据学生查询并加入班级?

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

    【讨论】:

      猜你喜欢
      • 2016-12-11
      • 2015-09-01
      • 2021-06-11
      • 2017-05-30
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 2014-03-23
      • 2018-10-12
      相关资源
      最近更新 更多