Maison  >  Article  >  base de données  >  Comment trier les résultats à l'aide de la fonction FIELD de MySQL dans Doctrine 2 ?

Comment trier les résultats à l'aide de la fonction FIELD de MySQL dans Doctrine 2 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 00:07:02863parcourir

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

Commande par fonction MySQL FIELD dans Doctrine 2

Doctrine 2 ne prend pas en charge nativement la fonction MySQL FIELD prête à l'emploi. Pour l'utiliser, vous pouvez exploiter les fonctions de chaîne personnalisées fournies par les extensions.

Solution DoctrineExtensions :

La bibliothèque DoctrineExtensions comprend une fonction de chaîne personnalisée nommée « FIELD » qui émule le Fonction MySQL FIELD. Pour implémenter cela, ajoutez la configuration suivante :

<code class="php">$doctrineConfig = $this->em->getConfiguration();
$doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');</code>

Utilisation :

La fonction FIELD peut être utilisée dans les clauses SELECT, WHERE et BETWEEN. Bien qu'il ne puisse pas être utilisé directement dans ORDER BY, une solution de contournement consiste à ajouter un champ supplémentaire dans la clause SELECT et à trier par ce champ à la place :

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

En spécifiant HIDDEN dans la clause SELECT, vous pouvez éviter d'avoir le un champ supplémentaire apparaît dans la ligne de résultat. Cela vous permet d'ordonner efficacement les valeurs dans l'expression IN à l'aide de Doctrine 2.2.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn