Heim  >  Artikel  >  Datenbank  >  Wie ordne ich Ergebnisse mithilfe der FIELD-Funktion von MySQL in Doctrine 2 an?

Wie ordne ich Ergebnisse mithilfe der FIELD-Funktion von MySQL in Doctrine 2 an?

Linda Hamilton
Linda HamiltonOriginal
2024-10-30 00:07:02863Durchsuche

How to Order Results Using MySQL's FIELD Function in Doctrine 2?

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 ordnen

Das 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn