Doctrine 2 の MySQL FIELD 関数による順序付け
Doctrine 2 は、そのままでは MySQL FIELD 関数をネイティブにサポートしません。これを利用するには、拡張機能によって提供されるカスタム文字列関数を利用できます。
DoctrineExtensions ソリューション:
DoctrineExtensions ライブラリには、 MySQLのFIELD関数。これを実装するには、次の構成を追加します。
<code class="php">$doctrineConfig = $this->em->getConfiguration(); $doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');</code>
使用法:
FIELD 関数は、SELECT、WHERE、および BETWEEN 句で使用できます。 ORDER BY で直接使用することはできませんが、回避策として、SELECT 句にフィールドを追加し、代わりにそのフィールドで並べ替えることが含まれます。
<code class="php">$qb ->select("r, field(r.id, " . implode(", ", $ids) . ") as HIDDEN field") ->from("Entities\Round", "r") ->where($qb->expr()->in("r.id", $ids)) ->orderBy("field");</code>
SELECT 句で HIDDEN を指定すると、追加のフィールドが結果行に表示されます。これにより、Doctrine 2.2.
を使用して IN 式内で値を効率的に順序付けることができます。以上がDoctrine 2 で MySQL の FIELD 関数を使用して結果を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。