Symfony 存储库区分大小写问题
Symfony repository case sensitivity Issue
我想在数据库中搜索客户的名字、姓氏和公司名称,但是没有结果。这可能是什么原因?我做了 '%'.$search.'%'
但结果是空白。我认为它区分大小写。我该如何解决?
存储库:
public function search(string $search)
{
$search = trim($search);
if (!$search) {
return null;
}
$query = $this->createQueryBuilder('customers');
return $query->where('customers.name LIKE :search OR customers.lastname LIKE :search OR customers.company_name LIKE :search')
->setParameter('search', '%'.$search.'%')
->getQuery()
->getResult();
}
Name : Berkay
Lastname : Cooke
Working Get : /customerSearch?q=Berkay - erkay - erk
Not Working Get : /customerSearch?q=berkay
Symfony Doctrine 没有关键字来匹配不区分大小写的模式。作为解决方法,您可以尝试这个(未测试):
public function search(string $search)
{
$search = strtolower(trim($search));
if (!$search) {
return null;
}
$query = $this->createQueryBuilder('customers');
return $query
->where('
LOWER(customers.name) LIKE :search OR
LOWER(customers.lastname) LIKE :search OR
LOWER(customers.company_name) LIKE :search
')
->setParameter('search', '%'.$search.'%')
->getQuery()
->getResult();
}
请注意两个重要变化:
- 使用函数
strtolower()
开头的函数;
- 在查询中使用 DQL 关键字
LOWER
。
我想在数据库中搜索客户的名字、姓氏和公司名称,但是没有结果。这可能是什么原因?我做了 '%'.$search.'%'
但结果是空白。我认为它区分大小写。我该如何解决?
存储库:
public function search(string $search)
{
$search = trim($search);
if (!$search) {
return null;
}
$query = $this->createQueryBuilder('customers');
return $query->where('customers.name LIKE :search OR customers.lastname LIKE :search OR customers.company_name LIKE :search')
->setParameter('search', '%'.$search.'%')
->getQuery()
->getResult();
}
Name : Berkay
Lastname : Cooke
Working Get : /customerSearch?q=Berkay - erkay - erk
Not Working Get : /customerSearch?q=berkay
Symfony Doctrine 没有关键字来匹配不区分大小写的模式。作为解决方法,您可以尝试这个(未测试):
public function search(string $search)
{
$search = strtolower(trim($search));
if (!$search) {
return null;
}
$query = $this->createQueryBuilder('customers');
return $query
->where('
LOWER(customers.name) LIKE :search OR
LOWER(customers.lastname) LIKE :search OR
LOWER(customers.company_name) LIKE :search
')
->setParameter('search', '%'.$search.'%')
->getQuery()
->getResult();
}
请注意两个重要变化:
- 使用函数
strtolower()
开头的函数; - 在查询中使用 DQL 关键字
LOWER
。