簡體   English   中英

如何根據另一個表的值 Eloquent 從一個表中進行選擇?

[英]How to select from a table based on another table's values Eloquent?

我正在嘗試獲取一些仍然活躍的學生的數據。 即使我在同一個表中有來自不活躍學生的數據。

這是學生出勤

在此處輸入圖片說明

這是學生課

在此處輸入圖片說明

這是我想出的 Eloquent 查詢:

        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();

查詢語句:

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

現在我的 Eloquent 查詢結果如下:

在此處輸入圖片說明

如您所見,student_id 22 的classroom_id 為2 處於非活動狀態,但它似乎處於非活動狀態一次,其余處於活動狀態。 如果我刪除 student_classes 加入,我將不會得到所有重復的結果。

目標是即使我在 StudentAttendance 中查詢,也顯示學生在 StudentClass 中活躍(active = 1)的今天所有出勤率。

您將希望將您的加入范圍student_classesstudent_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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM