"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment commander des résultats en utilisant la fonction de champ de MySQL \ dans Doctrine 2?

Comment commander des résultats en utilisant la fonction de champ de MySQL \ dans Doctrine 2?

Publié le 2025-03-24
Parcourir:594

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

Commande par la fonction de champ mysql dans la doctrine 2

Doctrine 2 ne prend pas en charge nativement la fonction de champ mysql hors de la boîte. Pour l'utiliser, vous pouvez tirer parti des fonctions de chaîne personnalisées fournies par les extensions.

DoctrineExtensions Solution:

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

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

usage:

La fonction de champ peut être utilisée dans SELECT, où et entre les clauses. Bien qu'il ne puisse pas être utilisé directement dans l'ordre, une solution de contournement consiste à ajouter un champ supplémentaire dans la clause de sélection et à commander par ce champ à la place:

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

En spécifiant Hidden dans la clause SELECT, vous pouvez éviter que le champ supplémentaire apparaisse dans la ligne de résultat. Cela vous permet de commander des valeurs efficacement dans l'expression in en utilisant la doctrine 2.2.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3