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での表現。