sql >> Databáze >  >> RDS >> Mysql

Nelze převést dotaz MySql pomocí doktríny DQL nebo QueryBuilder

Toto je jedna z těch situací, kdy vám Doctrine ORM pravděpodobně způsobí více problémů, než vyřeší. Můžete:

  1. Použijte nativní dotaz a relevantní ResultSetMapping nastavení
  2. Refaktorujte svůj SQL dotaz na něco, co Doctrine zvládne v DQL. Když se podíváte na dotaz, který máte, existuje několik různých způsobů, jak to můžete udělat (např. zacházet s poddotazem jako s dočasnou tabulkou v části FROM / JOIN), ale nevidím způsob, který by Doctrine DQL umožnil
  3. Jen jděte na přímý SQL pomocí Doctrine DBAL. Zdá se, že používáte $this->_em což mě nutí si myslet, že jste v EntityRepository , takže můžete udělat:$this->_em->getConnection() získat DBAL připojení pak stačí udělat $conn->query() . Je zřejmé, že tímto způsobem ztratíte výhody ORM (databázová agnostika atd.), ale můžete si o ORM myslet, že mají daňovou správu provádějící složité dotazy.

Chápu, že žádná z nich není ideální, ale ze zkušenosti je někdy lepší Doctrine ORM odsunout z cesty, abyste dosáhli toho, co potřebujete.




  1. jedinečný klíč založený na 2 sloupcích v SQL Server 2008?

  2. Jak vybrat datum ze sloupce datum a čas?

  3. Server MySQL odešel s Ruby on Rails

  4. Slick dynamic groupby