sql >> Databasteknik >  >> RDS >> Mysql

Det går inte att konvertera MySql-fråga med doktrin DQL eller QueryBuilder

Detta är en av de situationer där Doctrin ORM sannolikt kommer att orsaka dig fler problem än den löser. Du kan:

  1. Använd en infödd fråga och relevant ResultSetMapping inställning
  2. Refaktorera din SQL-fråga till något som Doctrine kan hantera i DQL. När du tittar på frågan du har finns det ett antal olika sätt du kan göra det (t.ex. behandla underfrågan som en tillfällig tabell i FROM / JOIN-delen) men jag kan inte se något sätt som Doctrin DQL skulle tillåta
  3. Gå bara för rak SQL med Doctrine DBAL. Det verkar som att du använder $this->_em vilket får mig att tro att du är i ett EntityRepository , så du kan göra:$this->_em->getConnection() för att få en DBAL-anslutning gör sedan bara $conn->query() . Uppenbarligen förlorar du på detta sätt fördelarna med en ORM (databasagnostiker etc.) men du kan tänka på ORM som att de har en skatt som utför komplexa frågor.

Jag förstår att ingen av dessa är idealisk, men av erfarenhet är det ibland bättre att skjuta Doctrin ORM ur vägen för att uppnå det du behöver.




  1. Få ett resultat genom att jämföra två tabeller med en identisk kolumn

  2. Inloggningsmetod för autentisering av cookiestoken

  3. Hur testar man om en sträng är JSON eller inte?

  4. Förstå händelseförlust med utökade händelser