Foros del Web » Programando para Internet » PHP » Zend »

[SOLUCIONADO] dql referencie entre tablas

Estas en el tema de dql referencie entre tablas en el foro de Zend en Foros del Web. Hola: Es posible hacer esto en un dql? Cita: SELECT u.nombres,u.apellidos FROM lista l LEFT JOIN histousuario h ON l.histousuario_id = h.id LEFT JOIN usuario ...
  #1 (permalink)  
Antiguo 12/06/2013, 11:35
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 10 meses
Puntos: 12
dql referencie entre tablas

Hola:

Es posible hacer esto en un dql?
Cita:
SELECT u.nombres,u.apellidos FROM lista l LEFT JOIN histousuario h ON l.histousuario_id = h.id LEFT JOIN usuario u ON h.usuario_id = u.id
WHERE l.documento_id = 3
es decir, tabla lista hace referencia a la tabla histousuario, y la tabla histousuario hace referencia a la tabla usuario, trabajo con doctrine 2.

Gracias
  #2 (permalink)  
Antiguo 12/06/2013, 11:56
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: dql referencie entre tablas

Claro que puedes solo que el ON no es parte del DQL, te sugiero que pases por la documentación, de todas formas a grandes rasgos seria algo asi:

Código DQL:
Ver original
  1. SELECT u
  2. FORM Lista l
  3. LEFT JOIN l.histousuario hu
  4. LEFT JOIN hu.usuario
  5. WHERE l.doc = 3
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 12/06/2013, 12:35
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 10 meses
Puntos: 12
Respuesta: dql referencie entre tablas

pues este dql no me funciona:
Cita:
$query = $this->em->createQuery('SELECT u.nombres,u.apellidos, d.descripcion FROM Application\Entity\Lista l
JOIN l.documento do
LEFT JOIN l.histousuario h
LEFT JOIN h.usuario u
LEFT JOIN h.cargos c
LEFT JOIN c.departamento d
WHERE do.id ='.$doc);
probé de esa manera y tampoco:
Cita:
$query = $this->em->createQuery('SELECT u.nombres,u.apellidos, d.descripcion FROM Application\Entity\Lista l
LEFT JOIN l.histousuario h
LEFT JOIN h.usuario u
LEFT JOIN h.cargos c
LEFT JOIN c.departamento d
WHERE l.documento ='.$doc);
y este sql si me funciona:
Cita:
$sql = 'SELECT u.nombres,u.apellidos, d.descripcion FROM lista l LEFT JOIN histousuario h ON l.histousuario_id = h.id
LEFT JOIN usuario u ON h.usuario_id = u.id LEFT JOIN cargos c ON h.cargos_id = c.id
LEFT JOIN departamento d ON c.departamento_id = d.id
WHERE l.documento_id = '.$doc;
  #4 (permalink)  
Antiguo 12/06/2013, 15:16
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: dql referencie entre tablas

A que te refieres exactamente con no funciona ?, da algún error ?, y ten en cuenta que deberias utilizar setParameter en vez de concatenar de esa forma

Código PHP:
Ver original
  1. $query = $this->em->createQuery('SELECT u.nombres,u.apellidos, d.descripcion FROM Application\Entity\Lista l
  2.                                 JOIN l.documento do
  3.                                 LEFT JOIN l.histousuario h
  4.                                 LEFT JOIN h.usuario u
  5.                                 LEFT JOIN h.cargos c
  6.                                 LEFT JOIN c.departamento d
  7.                                 WHERE do.id = :doc');
  8. $query->setParameter('doc', $doc);
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: tablas
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 04:48.