Reihenfolge nach MySQL-FELD-Funktion in Doktrin 2
Doktrin 2 unterstützt die MySQL-FELD-Funktion nicht standardmäßig. Um es zu nutzen, können Sie benutzerdefinierte Zeichenfolgenfunktionen nutzen, die von Erweiterungen bereitgestellt werden.
DoctrineExtensions-Lösung:
Die DoctrineExtensions-Bibliothek enthält eine benutzerdefinierte Zeichenfolgenfunktion namens „FIELD“, die das emuliert MySQL FIELD-Funktion. Um dies zu implementieren, fügen Sie die folgende Konfiguration hinzu:
<code class="php">$doctrineConfig = $this->em->getConfiguration(); $doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');</code>
Verwendung:
Die FIELD-Funktion kann in SELECT-, WHERE- und BETWEEN-Klauseln verwendet werden. Obwohl es nicht direkt in ORDER BY verwendet werden kann, besteht eine Problemumgehung darin, ein zusätzliches Feld in der SELECT-Klausel hinzuzufügen und stattdessen nach diesem Feld zu sortieren:
<code class="php">$qb ->select("r, field(r.id, " . implode(", ", $ids) . ") as HIDDEN field") ->from("Entities\Round", "r") ->where($qb->expr()->in("r.id", $ids)) ->orderBy("field");</code>
Durch die Angabe von HIDDEN in der SELECT-Klausel können Sie vermeiden, dass das In der Ergebniszeile erscheint ein zusätzliches Feld. Dadurch können Sie Werte innerhalb des IN-Ausdrucks mithilfe von Doktrin 2.2.
effizient ordnenDas obige ist der detaillierte Inhalt vonWie ordne ich Ergebnisse mithilfe der FIELD-Funktion von MySQL in Doctrine 2 an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!