我正在使用Laravel的Eloquent ORM來查詢數據庫的信息,但由於某種原因生成的查詢未返回所有行。Eloquent ORM導致MySQL選擇不返回所有行
鋒查詢:
\Permit::selectRaw('CONCAT(lk_departments.dept_id, ".") AS dept_id, '.
'lk_departments.dept_name, '.
'COUNT(DISTINCT permits.permit_number) AS total')
->leftJoin('lk_departments', 'permits.dept_id', '=', 'lk_departments.dept_id')
->where('permits.permit_number', '!=', 'N/A')
->whereBetween('permits.valid_date', [$query_info['start_date'], $query_info['end_date']])
->groupBy('lk_departments.dept_name')
->orderBy('lk_departments.dept_name', 'ASC')
->get()
得到的查詢:
SELECT
CONCAT(lk_departments.dept_id, ".") AS dept_id, lk_departments.dept_name,
COUNT(DISTINCT permits.permit_number) AS total
FROM permits
LEFT JOIN lk_departments ON permits.dept_id = lk_departments.dept_id
WHERE permits.valid_date BETWEEN '01/01/2000' AND '12/12/2100'
GROUP BY lk_departments.dept_name
ORDER BY lk_departments.dept_name ASC
返回的數據:
dept_id dept_name total
+--------------------------------------------------------+
| NULL NULL 0 |
| 1. Academic Achievement-(Special Services) 11 |
| 3. Academic Clubs 1 |
| 4. Academic Custodial & Grounds Services 1 |
| 5. Accounting 2 |
| 6. Admissions 356 |
| 7. Advanced Programs Dept (Education Dept) 8 |
| 9. Aerospace Studies - Air Force ROTC 1 |
| 11. American Federation of Teachers 0 |
| 13. Anthropology 1 |
| 14. Art Dept. 4 |
| 17. Athletic Dept. 11 |
| 21. Biology Dept. 2 |
| |
| ... ... ... |
+--------------------------------------------------------+
我提到這個問題,修改total
:Count distinct values
,但我仍然收到一個NULL
一行0
的total
和失蹤記錄。我對MySQL不太好,所以如果我錯過了一些東西,請原諒我。理想情況下,我希望每個部門在特定時間範圍內獲得許可。
注:
dept_id
=自動遞增鏈接到一個部門
將加入其中'dept_id爲IS NOT NULL'不省略那些不需要的行? – tadman 2014-09-10 19:22:42
由於某些原因,添加'dept_id IS NOT NULL'會返回一個空集。 – hellaminx 2014-09-10 21:25:14
這特別奇怪。作爲一個註釋,你應該避免在查詢中使用表示類型的東西,比如將'.'附加到數字中,而不是保存它在任何視圖中顯示的時候。 – tadman 2014-09-10 21:35:49