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.