Mysql
 sql >> Database >  >> RDS >> Mysql

Impossibile convertire la query MySql utilizzando la dottrina DQL o QueryBuilder

Questa è una di quelle situazioni in cui Doctrine ORM probabilmente ti causerà più problemi di quanti ne risolva. Potresti:

  1. Utilizzare una query nativa e relativo ResultSetMapping configurazione
  2. Refactoring della tua query SQL in qualcosa che Doctrine può gestire in DQL. Osservando la query che hai, ci sono diversi modi in cui potresti farlo (ad es. trattando la sottoquery come una tabella temporanea nella parte FROM / JOIN) ma non riesco a vedere un modo in cui Doctrine DQL consentirebbe
  3. Scegli semplicemente SQL usando Doctrine DBAL. Sembra che tu stia usando $this->_em il che mi fa pensare che tu sia in un EntityRepository , quindi potresti fare:$this->_em->getConnection() per ottenere un Connessione DBAL quindi fai semplicemente $conn->query() . Ovviamente in questo modo si perdono i vantaggi di un ORM (database agnostic ecc.) ma si può pensare che gli ORM abbiano una tassa che esegue query complesse.

Capisco che nessuno di questi sia l'ideale, ma per esperienza, a volte è meglio eliminare Doctrine ORM per ottenere ciò di cui hai bisogno.