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

Kan ikke konvertere MySql-forespørgsel ved hjælp af doktrin DQL eller QueryBuilder

Dette er en af ​​de situationer, hvor Doctrin ORM sandsynligvis vil give dig flere problemer, end den løser. Du kunne:

  1. Brug en native forespørgsel og relevant ResultSetMapping opsætning
  2. Refaktorer din SQL-forespørgsel til noget, som Doctrine kan håndtere i DQL. Når du ser på den forespørgsel, du har, er der en række forskellige måder, du kan gøre det på (f.eks. behandle underforespørgslen som en midlertidig tabel i FROM / JOIN-delen), men jeg kan ikke se en måde, som Doctrin DQL ville tillade
  3. Bare gå efter direkte SQL ved hjælp af Doctrine DBAL. Det ser ud til, at du bruger $this->_em hvilket får mig til at tro, at du er i et EntityRepository , så du kunne gøre:$this->_em->getConnection() for at få en DBAL-forbindelse så lav bare $conn->query() . På denne måde mister du naturligvis fordelene ved en ORM (databaseagnostiker osv.), men du kan tænke på ORM'er som at have en skat, der udfører komplekse forespørgsler.

Jeg forstår, at ingen af ​​disse er ideelle, men af ​​erfaring er det nogle gange bedre at skubbe Doctrin ORM af vejen for at opnå det, du har brug for.




  1. MySQL IN-tilstandsgrænse

  2. Har et problem med at binde parametre til en BOB-erklæring

  3. Sådan migrerer du SQL Server-job fra en SQL Server-instans til en anden

  4. Hvornår skal man bruge mysql_real_escape_string()