【发布时间】:2017-04-12 13:18:41
【问题描述】:
我有三张桌子:
老师
身份证
名字
家庭名称
教室
类名
teacher_id
学生
名字
家庭名称
教师与教室是一对多的关系
学生与教室有多对多的关系
如何在不使用 foreach 的情况下使用 Eloquent 方法检索 Teacher 的所有学生?
【问题讨论】:
我有三张桌子:
老师
身份证
名字
家庭名称
教室
类名
teacher_id
学生
名字
家庭名称
教师与教室是一对多的关系
学生与教室有多对多的关系
如何在不使用 foreach 的情况下使用 Eloquent 方法检索 Teacher 的所有学生?
【问题讨论】:
$teacher = Teacher::with('classrooms.students')->find($someId); //eager load
$studentsArray = $teacher->classrooms->pluck('students'); //array of students with duplicates
$students = (new Collection($studentsArray))->collapse()->unique(); //collection of unique students
【讨论】:
在你的教师模型中创建一个新的关系,如下所示:
public function students()
{
return $this->hasManyThrough(Student::class, ClassRoom::class);
}
现在您只需像下面这样查询学生:
$teacher = Teacher::where('id', '1')->first();
$students = $teacher->students;
【讨论】: