Ich arbeite an einem Symfony 2.8
basierten Projekt, das es einem user
ermöglicht, einen order
zu platzieren.Wie erhält man die Anzahl/Anzahl der Benutzer mit genau einer Bestellung in Doctrine?
Jetzt möchte ich eine Doctrine
Anfrage erstellen, die die Nummer users
die genau eine order
zurückgibt. Ich dachte, das wäre leicht, aber ich bin auf diese stundenlang ...
- Wählen Sie die Benutzer und ihre Anzahl von Aufträgen
- alle Benutzer Wählen Sie mit
order_count = 1
aus dem Ergebnis von Schritt 1 - einige mehr Bewerben Filter von nur Aufträge von den Benutzern im Ergebnis von Schritt 2 und durch Zugabe von Bedingung (zB Status = abgeschlossen)
in SQL folgende Arbeiten der Auswahl schöner Schritt 1 zu lösen:
SELECT user_id, COUNT(*) as count FROM order WHERE status = 'completed' GROUP BY user_id
aber wenn ich versuche, dies zu Doctrine
übersetzen ich die folgenden Fehlermeldung erhalten:
$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 '*'
So kann ich nicht einmal den ersten Schritt lösen. Irgendeine Idee, wie man das macht?
EDIT:
Hat einige weitere Experimente mit verschiedenen wählt:
$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
So $qb->select('o_inner, COUNT(o_inner.user)')
scheint 1. für Schritt zu arbeiten, aber da ich nicht einen benutzerdefinierten Alias verwenden können (... as count
nicht funktioniert) , wie kann ich das Zählungsresultat in eine äußere Auswahl verweisen?
Probieren Sie count (o_inner.user) oder count (o_inner.id) aus, es erwartet ein Literal. Grüße – Albeis