我正在嘗試獲取一些仍然活躍的學生的數據。即使我在同一張表格中也有來自不活躍學生的數據。這是學生關懷這是學生班這是我提出的雄辯查詢: StudentAttendance:: select('student_classes.active', 'student_attendances.student_id', 'student_attendances.classroom_id', 'classrooms.classroom', 'attendance_rules.option') ->join('classrooms', 'classrooms.id', '=', 'student_attendances.classroom_id') ->join('attendance_rules','attendance_rules.id', '=', 'student_attendances.attendance_id') ->join('student_classes', 'student_attendances.student_id', '=', 'student_classes.student_id') ->where('attendance_date', date("Y-m-d")) ->orderBy('classrooms.classroom', 'ASC') ->get();SQL:select `student_classes`.`active`, `student_attendances`.`student_id`, `student_attendances`.`classroom_id`, `classrooms`.`classroom`, `attendance_rules`.`option` from `student_attendances` inner join `classrooms` on `classrooms`.`id` = `student_attendances`.`classroom_id` inner join `attendance_rules` on `attendance_rules`.`id` = `student_attendances`.`attendance_id` inner join `student_classes` on `student_attendances`.`student_id` = `student_classes`.`student_id` where `attendance_date` = '2020-02-11' order by `classrooms`.`classroom` asc現在我的雄辯查詢結果如下:如您所見,student_id 22 的classroom_id處于非活動狀態,但它似乎處于非活動狀態一次,其余部分處于活動狀態。如果刪除student_classes加入,我不會得到所有重復的結果。目標是在 Student 類中顯示學生處于活動狀態(active=1)的今天的所有出勤情況,即使我在“學生關注”中進行查詢也是如此。
1 回答

三國紛爭
TA貢獻1804條經驗 獲得超7個贊
您需要將聯接的范圍限定為僅查看活動記錄。student_classes
您可以通過在 join 方法中使用回調來執行此操作:
->join('student_classes', function ($join) {
$join->on('student_attendances.student_id', '=', 'student_classes.student_id')
->on('student_classes.classroom_id', '=', 'student_attendances.classroom_id')
->where('student_classes.active', 1);
})
這在查詢生成器文檔中的“高級聯接子句”中進行了介紹 - https://laravel.com/docs/5.8/queries#joins
- 1 回答
- 0 關注
- 130 瀏覽
添加回答
舉報
0/150
提交
取消