[英]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.