Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Função mysql FIELD do Doctrine 2 em ordem por


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.