Utilisation de la fonction FIELD de Doctrine 2 dans l'ordre par
Doctrine 2 ne prend pas en charge nativement la fonction FIELD de MySQL. Cependant, une extension est disponible qui ajoute cette fonctionnalité.
Utilisation de DoctrineExtension
Pour utiliser la fonction FIELD dans Doctrine 2, vous pouvez installer le package DoctrineExtensions. Une fois installé, vous devez ajouter la configuration suivante à votre configuration Doctrine :
<code class="php">$doctrineConfig = $this->em->getConfiguration(); $doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');</code>
Après avoir ajouté cette configuration, vous pouvez utiliser la fonction FIELD dans vos requêtes Doctrine.
Exemple
L'exemple suivant montre comment utiliser la fonction FIELD pour trier une requête par un ensemble de valeurs :
<code class="php">$qb = $em->createQueryBuilder(); $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>
Cette requête renverra les résultats classés par la valeur FIELD, qui sera 1 pour la première valeur du tableau $ids, 2 pour la deuxième valeur, et ainsi de suite.
Remarque :
La fonction FIELD ne peut être utilisé dans les clauses SELECT, WHERE et BETWEEN. Il ne peut pas être utilisé dans les clauses ORDER BY. Pour contourner cette limitation, l'exemple ci-dessus utilise un champ masqué pour stocker la valeur FIELD.
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!