Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Error al user Like con doctrine

Estas en el tema de Error al user Like con doctrine en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas Estoy haciendo un cuadro de busqueda en Zend con Doctrine2 como ORM, necesito poder usar el like para poder buscar valores en la db, ...
  #1 (permalink)  
Antiguo 12/10/2011, 13:55
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Error al user Like con doctrine

Buenas

Estoy haciendo un cuadro de busqueda en Zend con Doctrine2 como ORM, necesito poder usar el like para poder buscar valores en la db, el where que utilizo es:

Código PHP:
 $qb->where($qb->expr()->like('gul.nombre'$buscarGrupo)); 
$buscarGrupo me trae el valor, si uso literal me anda, pero no asi el like que me dice:

Message: [Syntax Error] line 0, col 156: Error: Expected Doctrine\ORM\Query\Lexer::T_STRING, got 'ABC1'

Donde ABC1 es lo que busque...alguna idea?Message: [Syntax Error] line 0, col 156: Error: Expected Doctrine\ORM\Query\Lexer::T_STRING, got 'ABC1'
  #2 (permalink)  
Antiguo 12/10/2011, 14:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error al user Like con doctrine

Creo tienes que escapar tu variable, prueba esto:
Código PHP:
Ver original
  1. $qb->where($qb->expr()->like('gul.nombre', $qb->expr()->literal($buscarGrupo)));

Saludos.
  #3 (permalink)  
Antiguo 12/10/2011, 14:09
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Respuesta: Error al user Like con doctrine

No me dio error pero no pasa nada, es decir, tengo que buscar de manera literal y exacta a como esta en la base de datos para que me devuelva resultados, por ejemplo si escribo ABC1-1 me encuentra el grupo, pero si pongo ABC, no me lo encuentra, y si deberia mostrarlo...se entiende?
  #4 (permalink)  
Antiguo 12/10/2011, 14:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error al user Like con doctrine

Preuba entonces pasarlo como parámetro:
Código PHP:
Ver original
  1. $qb->where($qb->expr()->like('gul.nombre', '?1'));
  2. $qb->getQuery()->setParameter(1, '%' . $buscarGrupo. '%');
  #5 (permalink)  
Antiguo 12/10/2011, 14:16
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Respuesta: Error al user Like con doctrine

Si señor, esa era....mil graciassssssssss un grosooooooooooooooooo queda guardado esto!
  #6 (permalink)  
Antiguo 18/10/2011, 09:45
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Respuesta: Error al user Like con doctrine

me sirvio mucho, pero me interesa saber para buscar dos variables al hacer un filtro por ejemplo por nombre de grupo y clase, lo que hice fue:

A la clase la recibo asi

Código PHP:
protected function findAllQueryBuscarClase($buscarGrupo$clase) { 
Código PHP:
$qb->andWhere($qb->expr()->like('gul.nombre''?1'));
                                
$qb->andWhere($qb->expr()->like('gul.clase''?1')); 
En el where

y el return:

Código PHP:
return $qb->getQuery()->setParameter(2'%' $buscarGrupo'%''%' $clase'%'); 
  #7 (permalink)  
Antiguo 18/10/2011, 09:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error al user Like con doctrine

Tendrías que usar ?2, en el segundo parámetro y usar setParameter(1, $buscar) ->setParameter(2, $clase).

Te invito a que leas la documentación, es muy clara al respecto.

Saludos.

Etiquetas: zend
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:33.