Jeremy Hicks, děkujeme za vaše rozšíření .Nevěděl jsem, jak propojit vaši funkci s doktrínou, ale nakonec jsem našel odpověď.
$doctrineConfig = $this->em->getConfiguration();
$doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');
Potřebuji FIELD funkci objednat mé Entity, které vyberu pomocí IN výraz. Tuto funkci však můžete použít pouze v SELECT, WHERE, BETWEEN klauzule, nikoli v ORDER BY .
Řešení:
$qb
->select("r, field(r.id, " . implode(", ", $ids) . ") as HIDDEN field")
->from("Entities\Round", "r")
->where($qb->expr()->in("r.id", $ids))
->orderBy("field");
Chcete-li se vyhnout přidání field alias do řádku výsledků musíte zadat HIDDEN klíčové slovo. Takže takto je možné seřadit hodnoty v IN výraz v Nauce 2.2.