2017-06-02 43 views
-1

我有三個表:Laravel - 如何在Laravel語法中用count語句編寫兩個內部聯接?

  1. Users(列iddept_id
  2. Departments(列iddeptStringName
  3. Absences(列iduser_id

我想找出每個部門缺勤。我知道我需要兩個內部連接,但目前我很困惑如何使用Laravel Query Builder語法在兩個內部連接中插入一個計數。

最終的結果可能是這樣的:

+-------+---+ 
| DeptA | 3 | 
| DeptF | 7 | 
| DeptH | 3 | 
| DeptT | 7 | 
| DeptZ | 5 | 
+-------+---+ 

編輯:我不介意的SQL語法無論是。

+1

那麼你有什麼嘗試? – Sandeesh

回答

2

所以基本上類似於下面的東西應該工作:

DB::table('departments') 
    ->join('users','users.dept_id','=','departments.id') 
    ->join('absences','users.id','=','absences.user_id') 
    ->select('departments.id','departments.deptStringName', DB::raw("COUNT(*)")) 
    ->groupBy('departments.id','departments.deptStringName') 
    ->get(); 

注意:當您應該分組組由行(例如標識符)的唯一值。如果您的部門名稱保證是唯一的,那麼您可以完全省略由department.id選擇和分組。

+0

似乎不工作,我如何將以下SQL轉換爲laravel語法'SELECT COUNT(abs.id)as AbsenceCount,dept.deptStringName FROM Absences abs JOIN Users on u on u.id = abs.user_id JOIN Dept.dept.id = u.dept_id group by dept.deptStringName ' – omrakhur

+0

@omrakhur什麼不行?任何錯誤消息? – apokryfos

+0

它不會給出錯誤,而是返回一個Builder對象 – omrakhur