Jeremy Hicks, merci pour votre extension .Je ne savais pas comment relier votre fonction à la doctrine, mais finalement j'ai trouvé la réponse.
$doctrineConfig = $this->em->getConfiguration();
$doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');
J'ai besoin de FIELD
fonction pour ordonner mes entités que je sélectionne par IN
expression. Mais vous ne pouvez utiliser cette fonction que dans SELECT, WHERE, BETWEEN
clause, pas dans ORDER BY
.
Solution :
$qb
->select("r, field(r.id, " . implode(", ", $ids) . ") as HIDDEN field")
->from("Entities\Round", "r")
->where($qb->expr()->in("r.id", $ids))
->orderBy("field");
Pour éviter d'ajouter un field
alias dans votre ligne de résultat, vous devez mettre HIDDEN
mot-clé. Donc, voici comment pouvoir commander des valeurs dans IN
expression dans Doctrine 2.2.