Php 选择相关模型符合条件的模型
我有一个班级Php 选择相关模型符合条件的模型,php,laravel,laravel-5,Php,Laravel,Laravel 5,我有一个班级学生和班级考试。一个学生可以有许多考试,一个考试可以属于一个学生。我需要选择所有参加“英语”考试的学生,因此我尝试执行以下操作: $english_students = Student::with('Exams')-whereHas('Exams', function($query){ //logic to return true if the student has a related Exam with name of "English"; }) 我的问题是我没有完全理
学生
和班级考试
。一个学生可以有许多考试,一个考试可以属于一个学生。我需要选择所有参加“英语”考试的学生,因此我尝试执行以下操作:
$english_students = Student::with('Exams')-whereHas('Exams', function($query){
//logic to return true if the student has a related Exam with name of "English";
})
我的问题是我没有完全理解在闭包中我能做什么或不能做什么。只需在回调函数中添加where子句:
$english_students = Student::with('Exams')-whereHas('Exams', function($query){
$query->where("name","English");
})->get();
$english_students = Student::with('Exams')->whereHas('Exams', function($query){
$query->where('name', 'English');
})->get();
如果您不需要参加考试,请使用以下方法:
另外,如果您不需要加载所有学生的考试,请删除
with()
部分。如果他也想参加考试怎么办?@YouneL则他不应该删除with()
部分。但是OP的任务听起来好像不需要为每个学生加载所有的考试。然后使用has
就足够了:student::has('tests','=','English')->get()代码>
$english_students = Student::has('exams', '=', 'English')->get();
Student::whereHas('Exams', function($q) use($examName) {
$q->where('name', $examName);
})
->get();