Jeremy Hicks, dziękuję za twoje rozszerzenie .Nie wiedziałem, jak połączyć twoją funkcję z doktryną, ale w końcu znalazłem odpowiedź.
$doctrineConfig = $this->em->getConfiguration();
$doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');
Potrzebuję FIELD
funkcja zamawiania moich jednostek, które wybieram przez IN
wyrażenie. Ale możesz użyć tej funkcji tylko w SELECT, WHERE, BETWEEN
klauzula, nie w ORDER BY
.
Rozwiązanie:
$qb
->select("r, field(r.id, " . implode(", ", $ids) . ") as HIDDEN field")
->from("Entities\Round", "r")
->where($qb->expr()->in("r.id", $ids))
->orderBy("field");
Aby uniknąć dodawania field
alias w wierszu wyników, musisz umieścić HIDDEN
słowo kluczowe. Więc to jak móc zamawiać wartości w IN
wyrażenie w Doctrine 2.2.