Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Lehre 2 mysql FIELD-Funktion in der Reihenfolge von

Jeremy Hicks, vielen Dank für Ihre Erweiterung .Ich wusste nicht, wie ich deine Funktion mit der Lehre verbinden soll, aber endlich finde ich eine Antwort.

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

Ich brauche FIELD Funktion zum Ordnen meiner Entitäten, die ich per IN auswähle Ausdruck. Aber Sie können diese Funktion nur in SELECT, WHERE, BETWEEN verwenden -Klausel, nicht in ORDER BY .

Lösung:

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

Um das Hinzufügen von field zu vermeiden alias in Ihre Ergebniszeile müssen Sie HIDDEN einfügen Stichwort. So können Sie Werte in IN bestellen Ausdruck in Lehre 2.2.