Джеръми Хикс, благодаря за вашето разширение .Не знаех как да свържа вашата функция с доктрина, но най-накрая намерих отговор.
$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
израз в доктрина 2.2.