Dette er en af de situationer, hvor Doctrin ORM sandsynligvis vil give dig flere problemer, end den løser. Du kunne:
- Brug en native forespørgsel
og relevant
ResultSetMapping
opsætning - 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
- 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 etEntityRepository
, 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.