Mysql
 sql >> Database >  >> RDS >> Mysql

Dottrina 2 mysql FIELD funzione in ordine per

Jeremy Hicks, grazie per la tua estensione .Non sapevo come collegare la tua funzione alla dottrina, ma finalmente trovo la risposta.

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

Ho bisogno di FIELD funzione per ordinare le mie entità che seleziono da IN espressione. Ma puoi usare questa funzione solo in SELECT, WHERE, BETWEEN clausola, non in ORDER BY .

Soluzione:

$qb
            ->select("r, field(r.id, " . implode(", ", $ids) . ") as HIDDEN field")
            ->from("Entities\Round", "r")
            ->where($qb->expr()->in("r.id", $ids))
            ->orderBy("field");

Per evitare di aggiungere field alias nella riga dei risultati devi inserire HIDDEN parola chiave. Quindi ecco come poter ordinare i valori in IN espressione nella Dottrina 2.2.