我正在使用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