我有一个班级Student
和班级Exam
。一个学生可以参加很多考试,一个考试可以属于一个学生。我需要选择所有参加“英语”考试的学生,所以我试图做以下事情:
$english_students = Student::with('Exams')-whereHas('Exams', function($query){
//logic to return true if the student has a related Exam with name of "English";
})
我的问题是我没有完全理解我在封闭中能做什么或不能做什么。
答案 0 :(得分:1)
只需在回调函数中添加where子句:
$english_students = Student::with('Exams')->whereHas('Exams', function($query){
$query->where('name', 'English');
})->get();
如果您也不需要参加考试,请使用has方法:
$english_students = Student::has('exams', '=', 'English')->get();
答案 1 :(得分:0)
$english_students = Student::with('Exams')-whereHas('Exams', function($query){
$query->where("name","English");
})->get();
答案 2 :(得分:0)
Student::whereHas('Exams', function($q) use($examName) {
$q->where('name', $examName);
})
->get();
此外,如果您不需要加载所有学生的考试,请删除with()
部分。