sql >> Base de Datos >  >> RDS >> Mysql

No se puede convertir la consulta de MySql usando la doctrina DQL o QueryBuilder

Esta es una de esas situaciones en las que Doctrine ORM probablemente le cause más problemas de los que resuelve. Podrías:

  1. Utilice una consulta nativa y ResultSetMapping relevantes configuración
  2. Refactoriza tu consulta SQL en algo que Doctrine pueda manejar en DQL. Al observar la consulta que tiene, hay varias formas diferentes de hacerlo (por ejemplo, tratar la subconsulta como una tabla temporal en la parte FROM / JOIN), pero no puedo ver una forma en que Doctrine DQL lo permita
  3. Simplemente busque SQL directo usando Doctrine DBAL. Parece que estás usando $this->_em lo que me hace pensar que estás en un EntityRepository , por lo que podría hacer:$this->_em->getConnection() para obtener un Conexión DBAL entonces solo haz $conn->query() . Obviamente, de esta manera, pierde los beneficios de un ORM (base de datos agnóstica, etc.), pero puede pensar que los ORM tienen un impuesto que ejecuta consultas complejas.

Entiendo que ninguno de estos es ideal, pero por experiencia, a veces es mejor quitar Doctrine ORM del camino para lograr lo que necesitas.