预期的已知功能,获得'MD5'

时间:2013-01-21 11:04:52

标签: symfony doctrine-orm

我需要紧急帮助,我会解释我正在尝试做什么,然后解释我们已经拥有的东西。

需要像这样进行搜索:

//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

1 个答案:

答案 0 :(得分:1)

您需要将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