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'

表示lib:

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 回答