ホームページ >データベース >mysql チュートリアル >Doctrine 2 で MySQL FIELD 関数を使用するにはどうすればよいですか?
Doctrine 2 FIELD 関数を Order By で使用する
Doctrine 2 は MySQL FIELD 関数をネイティブにサポートしていません。ただし、この機能を追加する拡張機能が利用可能です。
DoctrineExtension の使用
Doctrine 2 で FIELD 関数を使用するには、DoctrineExtensions パッケージをインストールできます。インストールしたら、次の設定を Doctrine 設定に追加する必要があります:
<code class="php">$doctrineConfig = $this->em->getConfiguration(); $doctrineConfig->addCustomStringFunction('FIELD', 'DoctrineExtensions\Query\Mysql\Field');</code>
この設定を追加すると、Doctrine クエリで FIELD 関数を使用できるようになります。
例
次の例は、FIELD 関数を使用して値のセットによってクエリを並べ替える方法を示しています。
<code class="php">$qb = $em->createQueryBuilder(); $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>
このクエリは、FIELD 値によって並べ替えられた結果を返します。 $ids 配列の最初の値は 1、2 番目の値は 2 などとなります。
注:
FIELD 関数は、次の値のみを指定できます。 SELECT、WHERE、BETWEEN 句で使用されます。 ORDER BY 句では使用できません。この制限を回避するために、上記の例では非表示フィールドを使用して FIELD 値を保存しています。
以上がDoctrine 2 で MySQL FIELD 関数を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。