sql >> Database >  >> RDS >> Mysql

Kan MySql-query niet converteren met doctrine DQL of QueryBuilder

Dit is een van die situaties waarin Doctrine ORM u waarschijnlijk meer problemen zal bezorgen dan oplost. Je zou kunnen:

  1. Gebruik een native query en relevante ResultSetMapping instellen
  2. Refactor uw SQL-query in iets dat Doctrine aankan in DQL. Kijkend naar de query die je hebt, zijn er een aantal verschillende manieren waarop je dit zou kunnen doen (bijv. de subquery behandelen als een tijdelijke tabel in het FROM / JOIN-gedeelte), maar ik zie geen manier waarop Doctrine DQL zou toestaan
  3. Ga gewoon voor rechte SQL met Doctrine DBAL. Het lijkt erop dat je $this->_em . gebruikt waardoor ik denk dat je in een EntityRepository zit , dus je zou kunnen doen:$this->_em->getConnection() om een ​​ te krijgen DBAL-verbinding doe dan gewoon $conn->query() . Op deze manier verliest u natuurlijk de voordelen van een ORM (database-agnostisch enz.), maar u kunt ORM's zien als een belasting die complexe query's uitvoert.

Ik begrijp dat geen van deze ideaal is, maar uit ervaring is het soms beter om Doctrine ORM uit de weg te ruimen om te bereiken wat je nodig hebt.




  1. Dynamische SQL Pivot (met CONVERT DateField

  2. MySql-fout:kan tabel niet bijwerken in opgeslagen functie/trigger

  3. Afstand tussen twee punten berekenen (breedtegraad, lengtegraad)

  4. waarden krijgen die niet in de mysql-tabel voorkomen