1

次のような検索を行う必要があります。

//Project\MyBundle\Repository

$query = $this->getEntityManager()->getRepository('ProjectMyBundle:Product')->createQueryBuilder('p')
        ->where('MD5(p.id) = :id')
        ->setParameter('id', $id )
        ->getQuery()
        ->getSingleResult();

MD5 の ID を取得し、データベースで MD5 の ID を検索する必要があります。

検索を行うと、表示され、次のエラーが表示されます。

[構文エラー] 行 0、列 51: エラー: 既知の関数が予期され、'MD5' を取得しました

そのライブラリを示しました:

https://github.com/beberlei/DoctrineExtensions/blob/master/lib/DoctrineExtensions/Query/Mysql/Md5.php

しかし、私はそれをフォルダー内に置いたので、どこが重要なのかを知る必要があります。

Symfony 2.1.6 で MySQL、Doctrine 2.2 を使用しています。

4

1 に答える 1

2

MD5 をカスタム DQL 関数として登録する必要があります。

# app/config/config.yml
doctrine:
    orm:
        # ...
        entity_managers:
            default:
                # ...
                dql:
                    string_functions:
                        MD5: Acme\HelloBundle\DQL\MD5Function

詳細については、http ://symfony.com/doc/2.0/cookbook/doctrine/custom_dql_functions.html を参照してください。

于 2013-01-21T15:28:37.317 に答える