Lehre 2 DQL FALL, WENN in Zählen
Habe ich diese Abfrage in die native MySQL-Code
SELECT *
FROM `turn`
LEFT JOIN (
poi
) ON ( turn.id = poi.turn_id )
GROUP BY turn.id
ORDER BY count( case when poi.image = 1 then 1 else null end) DESC;
Ich neu erstellen müssen diese in der Lehre 2 DQL
Mein Versuch bisher ist dieser:
SELECT t, COUNT((CASE WHEN Bundle\Entity\Poi p.image = 1 then 1 ELSE NULL END)) AS num
FROM Bundle\Entity\Turn t
JOIN t.pois p
GROUP BY t.id
ORDER BY num DESC
Und im immer diese Fehlermeldung:
An exception has been thrown during the rendering of a template ("[Syntax Error] line 0, col 99: Error: Expected end of string, got '.'") in Bundle:Admin:showTurnsFiltered.html.twig at line 75.
Was mache ich falsch?
- Wo genau hast du diese Fehlermeldung bekommen ? Wie verwenden Sie Ihre DQL-Anweisung ?
- Ich verwende es in der Klasse Repository, erstellen Sie es und fire it up. Der Fehler erscheint in meinem frontend. Es ist Teil eines filter-Funktion, wenn ich den Aufruf dieser Funktion wird ein server-Fehler angezeigt. Weder stacktrace noch Fehlerprotokoll bieten nützliche Informationen :/
- Wie etwa das entfernen einer
(
und)
wie Sie mit Hilfe von zwei Klammern :/ Es scheint wirklich ein syntax-problem, wie dein query sieht gut aus. - Versucht, dass ich bin immer die gleichen Fehler wieder, nur statt
'.'
es gibt eineexpected FROM condition
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich es selbst nach Stunden von probieren und suchen, es ist die Arbeit mit diesem DQL:
Wichtig, dass Sie verwenden müssen SUMME anstelle von ANZAHL
SELECT t, SUM(CASE WHEN p.image = 1 then 1 ELSE 0 END) AS HIDDEN numImage
Müssen Sie ResultSetMappingBuilder. Es würde so Aussehen :
Hinweis: müssen Sie möglicherweise ändern
$query->getScalarResult()
zu$query->getResult()
.Query
Objekte, aber nicht mitNativeQuery
:-/