我正在研究基於Symfony 2.8
的項目,該項目允許user
放置order
。如何在教條中獲得正好一個訂單的用戶數量/數量?
現在我想創建一個Doctrine
查詢,返回users
的數字,其中只有一個order
。我想這將是容易的,但我對這個幾個小時...
- 選擇用戶和他們的訂單數
- 步驟的結果,選擇與
order_count = 1
所有用戶1 - 應用更多一些通過在步驟2的結果從用戶僅選擇的訂單,並通過添加條件過濾器(例如狀態=完成)
在SQL以下工作正常解決步驟1:
SELECT user_id, COUNT(*) as count FROM order WHERE status = 'completed' GROUP BY user_id
然而,當我嘗試將此轉化爲Doctrine
我得到以下錯誤:
$qb->select('o_inner.user, COUNT(*) as count')
->from('MyBundle:Order', 'o_inner')
->where('o_inner.status = :status')
->groupBy('o_inner.user')
->setParameter('status', 'completed');
[Doctrine\ORM\Query\QueryException]
[Syntax Error] line 0, col 30: Error: Expected Literal, got '*'
所以我甚至無法解決的第一步。任何想法如何做到這一點?
編輯:
做了一些更多的實驗不同的選擇:
$qb->select('o_inner.user, COUNT(o_inner.user) as count')
$qb->select('COUNT(o_inner.user) as count')
==> [Doctrine\ORM\Query\QueryException]
[Semantical Error] line 0, col 39 near 'FROM MyBundle:Order': Error: Class 'FROM' is not defined.
$qb->select('COUNT(o_inner.user)')
==> Works fine. So the "as count" statement seems to be a problem
$qb->select('o_inner.user')
==> [Doctrine\ORM\Query\QueryException]
[Semantical Error] line 0, col 12 near 'user FROM': Error: Invalid PathExpression. Must be a StateFieldPathExpression.
$qb->select('o_inner')
==> Workes fine
$qb->select('o_inner, COUNT(o_inner.user)')
==> Workes fine
所以$qb->select('o_inner, COUNT(o_inner.user)')
似乎爲第1步的工作,但因爲我不能使用自定義別名(... as count
不工作) ,我如何才能在外部選擇中引用計數結果?
嘗試計數(o_inner.user)或計數(o_inner.id),它需要一個文字。問候 – Albeis