Jest to jedna z tych sytuacji, w których Doctrine ORM prawdopodobnie spowoduje więcej problemów niż rozwiąże. Możesz:
- Użyj natywnego zapytania
i odpowiednie
ResultSetMapping
konfiguracja - Zrefaktoruj zapytanie SQL w coś, co Doctrine może obsłużyć w DQL. Patrząc na zapytanie, które masz, można to zrobić na wiele różnych sposobów (np. traktując podzapytanie jako tabelę tymczasową w części FROM / JOIN), ale nie widzę sposobu, na który pozwoli Doctrine DQL
- Po prostu przejdź do prostego SQL za pomocą Doctrine DBAL. Wygląda na to, że używasz
$this->_em
co sprawia, że myślę, że jesteś wEntityRepository
, więc możesz zrobić:$this->_em->getConnection()
aby uzyskać Połączenie DBAL następnie po prostu wykonaj$conn->query()
. Oczywiście w ten sposób tracisz korzyści z ORM (niezależność od bazy danych itp.), ale możesz myśleć o ORM jako o podatku wykonującym złożone zapytania.
Rozumiem, że żaden z nich nie jest idealny, ale z doświadczenia czasami lepiej jest odsunąć Doctrine ORM z drogi, aby osiągnąć to, czego potrzebujesz.