sql >> Base de Datos >  >> RDS >> Mysql

Doctrine 2 función mysql FIELD en orden por

Jeremy Hicks, gracias por su extensión .No sabía cómo conectar tu función a la doctrina, pero finalmente encontré la respuesta.

$doctrineConfig = $this->em->getConfiguration();
$doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');

Necesito FIELD función para ordenar mis Entidades que selecciono por IN expresión. Pero puede usar esta función solo en SELECT, WHERE, BETWEEN cláusula, no en ORDER BY .

Solución:

$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 agregar field alias en su fila de resultados necesita poner HIDDEN palabra clave. Así es como poder ordenar valores en IN expresión en Doctrine 2.2.