Джереми Хикс, спасибо за ваше расширение .Я не знал, как связать вашу функцию с доктриной, но, наконец, я нашел ответ.
$doctrineConfig = $this->em->getConfiguration();
$doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');
Мне нужна функция FIELD
, чтобы упорядочить мои сущности, которые я выбираю по выражению IN
.Но вы можете использовать эту функцию только в предложении SELECT, WHERE, BETWEEN
, но не в ORDER BY
.
Решение:
$qb
->select("r, field(r.id, " . implode(", ", $ids) . ") as HIDDEN field")
->from("Entities\Round", "r")
->where($qb->expr()->in("r.id", $ids))
->orderBy("field");
Чтобы избежать добавления псевдонима field
в строку результатов, необходимо ввести ключевое слово HIDDEN
.Вот так можно уметь упорядочивать значения в выражении IN
в Doctrine 2.2.