validator type length component symfony doctrine lowercase

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ó.