[英]Symfony Doctrine query builder LIKE not working in PostgreSQL
[英]Query using accent mark Doctrine + Symfony + PostgreSQL
我在 Doctrine 存儲庫中有一個方法來搜索這樣的人:
function search($value)
{
$qb = $this->createQueryBuilder('p');
$qb->where($qb->expr()->like(
'LOWER(p.lastName)',
"'%" . mb_strtolower($value) . "%'"));
}
例子:
不 | 姓名 | 姓 |
---|---|---|
1個 | 路易斯 | 桑切斯 |
2個 | 大衛 | 桑切斯 |
當我使用此方法且輸入為“Sanchez”時,僅返回第 1 條記錄,如果輸入為“Sánchez”,則僅返回第 2 條記錄(將 a 更改為 á)。 無論輸入是否包含任何重音符號(á、é、í、ó、ú),我都需要從我的數據庫中獲取所有記錄。
那 function 可能是您的問題unaccent的解決方案。
示例代碼在這里:
CREATE TABLE p (
last_name varchar(40) NOT NULL
);
INSERT INTO p VALUES ('Sanchez');
INSERT INTO p VALUES ('Sánchez');
SELECT p.last_name FROM p WHERE unaccent(p.last_name) LIKE CONCAT('%', unaccent('Sánchez'), '%');
SELECT p.last_name FROM p WHERE unaccent(p.last_name) LIKE CONCAT('%', unaccent('Sanchez'), '%');
結果:
姓 |
---|
桑切斯 |
桑切斯 |
姓 |
---|
桑切斯 |
桑切斯 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.