选择相关模型匹配标准的模型

时间:2018-01-22 11:56:40

标签: php laravel laravel-5

我有一个班级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";
})

我的问题是我没有完全理解我在封闭中能做什么或不能做什么。

3 个答案:

答案 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()部分。