Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Nie można przekonwertować zapytania MySql za pomocą doktryny DQL lub QueryBuilder

Jest to jedna z tych sytuacji, w których Doctrine ORM prawdopodobnie spowoduje więcej problemów niż rozwiąże. Możesz:

  1. Użyj natywnego zapytania i odpowiednie ResultSetMapping konfiguracja
  2. 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
  3. 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ś w EntityRepository , 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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dziedziczenie klas z .NET EF4.1 + MySQL

  2. Hibernacja łącząca dwie tabele i generująca odpowiedź json w wiosennym spokojnym serwisie internetowym?

  3. Pobierz nazwy tabel z bazy danych

  4. Wybierz najnowsze dane MySQL, ale wyjątkowy ośrodek

  5. MySQL:Dlaczego DELETE bardziej obciąża procesor niż INSERT?