Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySql-Abfrage kann nicht mit Doktrin DQL oder QueryBuilder konvertiert werden

Dies ist eine dieser Situationen, in denen Doctrine ORM Ihnen wahrscheinlich mehr Probleme bereiten wird, als es löst. Sie könnten:

  1. Verwenden Sie eine native Abfrage und relevante ResultSetMapping einrichten
  2. Refaktorisieren Sie Ihre SQL-Abfrage in etwas, das Doctrine in DQL verarbeiten kann. Wenn Sie sich die Abfrage ansehen, die Sie haben, gibt es eine Reihe verschiedener Möglichkeiten, wie Sie dies tun könnten (z. B. die Behandlung der Unterabfrage als temporäre Tabelle im FROM / JOIN-Teil), aber ich sehe keine Möglichkeit, die Doctrine DQL zulassen würde
  3. Entscheiden Sie sich einfach für direktes SQL mit Doctrine DBAL. Anscheinend verwenden Sie $this->_em was mich glauben lässt, dass Sie sich in einem EntityRepository befinden , also könnten Sie Folgendes tun:$this->_em->getConnection() um einen zu erhalten DBAL-Verbindung dann machen Sie einfach $conn->query() . Offensichtlich verlieren Sie auf diese Weise die Vorteile eines ORM (datenbankunabhängig usw.), aber Sie können sich ORMs so vorstellen, als hätten sie eine Steuer, die komplexe Abfragen ausführt.

Ich verstehe, dass keines davon ideal ist, aber aus Erfahrung ist es manchmal besser, Doctrine ORM aus dem Weg zu räumen, um das zu erreichen, was Sie brauchen.