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

Problema con join en Zend Db Select

Estas en el tema de Problema con join en Zend Db Select en el foro de Zend en Foros del Web. Buenas, quiero pasar esta sentencia SQL a Zend Framework mediante el objeto Zend_Db_Select y los join: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT e. * ...
  #1 (permalink)  
Antiguo 11/06/2012, 11:46
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Problema con join en Zend Db Select

Buenas, quiero pasar esta sentencia SQL a Zend Framework mediante el objeto Zend_Db_Select y los join:

Código MySQL:
Ver original
  1. SELECT e.* , upe.inscription_date
  2.         FROM event e, user_participate_event upe, user u
  3.         WHERE e.id_event = upe.event
  4.         AND u.id_user = upe.user
  5.         AND u.id_user = $id_user

Probé así:

Código PHP:
Ver original
  1. $sql = $this->select()
  2.             ->from(array('e'=>'event', 'u'=>'user'))
  3.             ->where('u.id_user=?', $id_user)
  4.             ->join('user_participate_event', 'e.id_event = user_participate_event.event');

Y me saltó el siguiente error:

Cita:
Message: Select query cannot join with another table
Estuve buscando por ahí, y vi que añadiendo al código anterior que no compruebe la integridad, se soluciona:

Código PHP:
Ver original
  1. $sql = $this->select()
  2.             ->setIntegrityCheck(false)
  3.             ->from(array('e'=>'event', 'u'=>'user'))
  4.             ->where('u.id_user=?', $id_user)
  5.             ->join('user_participate_event', 'e.id_event = user_participate_event.event');

Pero ahora tengo el siguiente error:

Cita:
Message: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'u.id_user' in 'where clause'
Y en mi tabla user si existe la columna id_user.

Entonces no se en qué estoy fallando.

Espero puedan ayudarme.

Un saludo y gracias.
  #2 (permalink)  
Antiguo 11/06/2012, 12:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con join en Zend Db Select

Como estas usando el Zend Db Table Select debes de usar el nombre completo de tu tabla, no puedes usar un alias.

Te recomiendo mejor usar un objeto Zend Db Select normal para evitar todo eso, lo puedes obtener desde el adaptador de forma sencilla.

Código PHP:
Ver original
  1. $Select = $this->getAdapter()->select();

Saludos.
  #3 (permalink)  
Antiguo 13/06/2012, 09:09
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Respuesta: Problema con join en Zend Db Select

Muchas gracias por tu respuesta GatorV.

Como bien indicas, el problema estaba en que debo usar el nombre completo de la tabla, así que ya he podido solucionarlo.

Con la otra opción que me comentas no he podido probar, porque la verdad no entiendo muy bien lo que tengo que implementar, pero bueno, ahora ya lo tengo funcionando.

Un saludo y gracias.

Etiquetas: join, select
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 15:45.