Jeremy Hicks、拡張機能 。私はあなたの機能を教義に結びつける方法を知りませんでした、しかし最終的に私は答えを見つけます。
$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の値を並べ替えることができます Doctrine2.2での表現。