Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Não é possível converter a consulta MySql usando DQL de doutrina ou QueryBuilder


Esta é uma daquelas situações em que o Doctrine ORM provavelmente causará mais problemas do que soluções. Você poderia:
  1. Use uma consulta nativa e ResultSetMapping relevante configuração
  2. Refatorize sua consulta SQL em algo que o Doctrine possa manipular em DQL. Olhando para a consulta que você tem, existem várias maneiras diferentes de fazer isso (por exemplo, tratando a subconsulta como uma tabela temporária na parte FROM / JOIN), mas não consigo ver uma maneira que o Doctrine DQL permitiria
  3. Basta ir para SQL direto usando Doctrine DBAL. Parece que você está usando $this->_em o que me faz pensar que você está em um EntityRepository , então você poderia fazer:$this->_em->getConnection() para obter um Conexão DBAL então basta fazer $conn->query() . Obviamente, dessa forma, você perde os benefícios de um ORM (banco de dados agnóstico etc.), mas pode pensar em ORMs como tendo um imposto executando consultas complexas.

Eu entendo que nenhum deles é ideal, mas por experiência própria, às vezes é melhor empurrar o Doctrine ORM para fora do caminho para alcançar o que você precisa.