Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.6k views
in Technique[技术] by (71.8m points)

symfony - Expected known function, got 'MD5'

I need to do a search like this:

//ProjectMyBundleRepository

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

I get the id on MD5 and have to search for an id on MD5 in the database.

When I do a search, I showed up, gives me the following error:

[Syntax Error] line 0, col 51: Error: Expected known function, got 'MD5'

Indicated that lib:

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

But I've put it inside the folder and now I need to know where it should matter.

I am using MySQL, Doctrine 2.2 in Symfony 2.1.6.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You'll need to register MD5 as a custom DQL function:

# app/config/config.yml
doctrine:
    orm:
        # ...
        entity_managers:
            default:
                # ...
                dql:
                    string_functions:
                        MD5: AcmeHelloBundleDQLMD5Function

For more info, see: http://symfony.com/doc/2.0/cookbook/doctrine/custom_dql_functions.html


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...