type - symfony component validator constraints
Doctrine Query Builder LOWER no funciona (3)
De alguna manera, la doctrina no me permite comparar dos valores de bajada: la de una variable y el primer nombre de un usuario.
$qb = $this->getEntityManager()->createQueryBuilder();
$qb
->select(''d'')
->from(''MyBundle:User'', ''d'')
->where(''LOWER(d.firstName) LIKE :fName'')
->setParameter(''fName'', strtolower(''%''.$fName.''%''));
$result = $qb->getQuery()->execute();
solo cuando $ fName tiene una cadena en mayúscula (es decir, ''Rob''), devolverá resultados como ''Robert'' y ''Robby''. Pero lo que quiero es que incluso cuando $ fName se escriba en minúscula (''rob''), estos resultados deberían aparecer. Parece que los d.firstNames no se reducen. ¿Por qué es este el caso?
puedes probar
$query = $em->createQuery("SELECT u FROM Isha/SuvyaBundle/Entity/Useru WHERE u.fName LIKE ''%$fName%'' ");
$result = $query->getResult();
Encontré la solución:
$qb = $this->getEntityManager()->createQueryBuilder();
$qb
->select(''u'')
->from(''MyBundle:User'', ''u'')
->where($qb->expr()->andX(
$qb->expr()->like(''LOWER(u.firstName)'', ''?1''),
$qb->expr()->like(''LOWER(u.lastName)'', ''?2'')
))
->setParameter(''1'', ''%'' . strtolower($firstName) . ''%'')
->setParameter(''2'', ''%'' . strtolower($lastName) . ''%'');
$result = $qb->getQuery()->execute();
Todavía curioso por qué el primer intento no funcionó.