我正在使用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,如何为此查询添加重音不敏感?
目前,我只有较低的,但我需要在"Clément"
为$search
时检索帐户"cle"
。这是一个自动填充表单(如搜索某人时的facebook)
答案 0 :(得分:1)
您可以创建自己的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 User Defined Functions中有很好的解释。
答案 1 :(得分:0)
在MySQL中,要以变音符号不敏感的方式从数据库中检索值,您应确保将字段的排序规则设置为中性,例如utf8_general_ci
。
但是对于PostgreSQL,排序工作方式不同。
也许这个答案可能对你有所帮助:
Does PostgreSQL support "accent insensitive" collations?