law - doctrine tutorial español
Doctrine LIKE caso insensible (5)
Además, puedes probar:
$queryBuilder->where(''LOWER(b.title) LIKE LOWER(:query)'')
->setParameter(''query'', ''%'' . $query . ''%'');
Importante: después de convertir una cadena que contiene caracteres especiales a minúsculas con strtolower (), los caracteres especiales no aparecen correctos.
¿Es posible hacer una búsqueda con Doctrine sin distinción de mayúsculas y minúsculas?
Esto depende principalmente de su servidor de base de datos. Un LIKE con MySQL no distingue entre mayúsculas y minúsculas. Un Me gusta con PostgreSQL distingue entre mayúsculas y minúsculas. Pero puedes ayudarte con algo como esto:
$pattern = strtolower(''HEllO WorlD'');
$q = Doctrine_Query::create()
->select(''u.username'')
->from(''User u'')
->where("LOWER(u.username) LIKE ?", $pattern);
La mejor manera de hacer esto es tener una columna de nombre de usuario canonizada, en esa columna puede almacenar la versión en minúscula de la columna de nombre de usuario y cualquier otro proceso de canonización que desee hacer y buscar e indexar esa columna en lugar de la columna de nombre de usuario, luego hacer
->where("u.canonic_username) LIKE ?", $pattern);
De esa manera puedes usar índices y todo eso.
Otra cosa que puedes hacer es:
$qb->andWhere($qb->expr()->like(''lower(o.name)'', '':name''));
$qb->setParameter(''name'', ''%''. strtolower($search) . ''%'');
Saludos.
$q = Doctrine_Query::create()
$q->select(''t'')
->from(''database_table t'')
->where($q->expr()->like(''t.search_field'', '':search_text''))
->setParameter(''search_text'', ''%''.strtolower($searchText).''%'');