Mysql
 sql >> Base de données >  >> RDS >> Mysql

Impossible de convertir la requête MySql à l'aide de la doctrine DQL ou QueryBuilder

C'est l'une de ces situations où Doctrine ORM va probablement vous causer plus de problèmes qu'il n'en résout. Vous pourriez :

  1. Utilisez une requête native et le ResultSetMapping pertinent configuration
  2. Refactorisez votre requête SQL en quelque chose que Doctrine peut gérer dans DQL. En regardant la requête que vous avez, il existe un certain nombre de façons différentes de le faire (par exemple, traiter la sous-requête comme une table temporaire dans la partie FROM / JOIN) mais je ne vois pas comment Doctrine DQL permettrait
  3. Optez simplement pour SQL direct en utilisant Doctrine DBAL. Il semble que vous utilisiez $this->_em ce qui me fait penser que vous êtes dans un EntityRepository , vous pouvez donc faire :$this->_em->getConnection() pour obtenir un Connexion DBAL puis faites simplement $conn->query() . Évidemment, de cette façon, vous perdez les avantages d'un ORM (indépendant de la base de données, etc.), mais vous pouvez considérer les ORM comme ayant une taxe exécutant des requêtes complexes.

Je comprends qu'aucun de ces éléments n'est idéal, mais par expérience, il est parfois préférable de pousser Doctrine ORM hors de portée pour obtenir ce dont vous avez besoin.