Jeremy Hicks, obrigado por sua extensão .Eu não sabia como conectar sua função à doutrina, mas finalmente encontrei a resposta.
$doctrineConfig = $this->em->getConfiguration();
$doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');
Eu preciso de
FIELD
função para ordenar minhas Entidades que eu seleciono por IN
expressão. Mas você pode usar esta função apenas em SELECT, WHERE, BETWEEN
cláusula, não em ORDER BY
. Solução:
$qb
->select("r, field(r.id, " . implode(", ", $ids) . ") as HIDDEN field")
->from("Entities\Round", "r")
->where($qb->expr()->in("r.id", $ids))
->orderBy("field");
Para evitar adicionar
field
alias em sua linha de resultado, você precisa colocar HIDDEN
palavra-chave. Então, é assim que você pode ordenar valores em IN
expressão na Doutrina 2.2.