繁体   English   中英

Symfony2,教义和pgsql,对重音不敏感

[英]Symfony2, doctrine and pgsql, search with accent insensitive

我正在使用Symfony2,并且使用createQueryBuilder有一个简单的查询,例如:

            $qb = $this->_em->createQueryBuilder();
            $qb->select(array('a'))
                    ->from('MyProjectBundle:Account', 'a')
                    ->where('LOWER(a.firstname) LIKE LOWER(?1)')
                    ->setParameters(array(1 => '%'.$search.'%'));
            return $qb->getQuery()->getResult();

我正在为数据库使用pdo_pgsql,如何为该查询添加不区分重音符号?

现在,我只有较低的那个,但是当$search"cle"时,我需要检索帐户"Clément" "cle" 这是用于自动完成表单(例如,当您搜索某人时为facebook)

您可以创建自己的DQL函数,然后将其注册到config.yml文件中。 可以通过以下方式在配置中注册:

# app/config/config.yml
doctrine:
    orm:
        # ...
        dql:
            string_functions:
                test_string: Acme\HelloBundle\DQL\StringFunction
                second_string: Acme\HelloBundle\DQL\SecondStringFunction
            numeric_functions:
                test_numeric: Acme\HelloBundle\DQL\NumericFunction
            datetime_functions:
                test_datetime: Acme\HelloBundle\DQL\DatetimeFunction

创建自己的DQL函数会遇到很多问题,但是DQL用户定义函数中对此进行了很好的说明。

在MySQL中,要以不区分变音符号的方式从数据库中检索值,请确保将字段的排序规则设置为中性,例如utf8_general_ci

但是对于PostgreSQL,排序规则以不同的方式工作。 也许这个答案可以帮助您:
PostgreSQL是否支持“不区分重音”的排序规则?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM