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

Consultas y Relaciones de Tablas con Zend

Estas en el tema de Consultas y Relaciones de Tablas con Zend en el foro de Zend en Foros del Web. En lo relacionado a Consultas y Relaciones en Tablas de Base de datos y Zend aun estoy un poco perdido. Un poco de ayuda no ...
  #1 (permalink)  
Antiguo 04/09/2012, 13:07
 
Fecha de Ingreso: abril-2007
Mensajes: 20
Antigüedad: 17 años, 6 meses
Puntos: 0
Pregunta Consultas y Relaciones de Tablas con Zend

En lo relacionado a Consultas y Relaciones en Tablas de Base de datos y Zend aun estoy un poco perdido. Un poco de ayuda no me caeria mal :D

Bueno veamos un poco del contexto:

Dos tablas Usuario y Pais.

Tabla Usuario:
Id - Username - Password - Salt - Nombres - Apellidos - Pais_id - etc.

Tabla Pais
Id - Nombre - Iso

Suponiendo que cada tabla pertenece a un modulo distinto, tendriamos dos tablas de tipo db-table:

Usuario_Model_DbTable_Usuario
Pais_Model_DbTable_Pais

Ahora las consultas:

Para obtener un listado de usuarios:

- Mysql: SELECT * FROM usuarios ORDER BY nombre LIMIT 20
- Zend:
Código PHP:
// modelo
$model = new Usuario_Model_DbTable_Usuario();
// consulta
$rowset $model->fetchAll(null'nombre',20);
// vista
$this->view->usuarios $rowset
Bien con esto tendo los datos del usuario y puedo mostrarlos en un datagrid.

Id - Nombres - Apellidos - Pais_id
1 - Juanito - Perez - 11
2 - Pepito - Torres - 11
3 - Pedrito - Garcia - 11

Ahora el detalle y el meollo del asunto: En lugar de mostrar el Pais_id como numero quiero mostrar el nombre.

En distintas ocasiones lo he solucionado de distinta forma:

- Usando Join:
Código PHP:
// modelo
$model = new Usuario_Model_DbTable_Usuario();
// consulta
$query $model->getAdapter()->select()->from(array('u'=>'usuario'))->joinLeft(array('p'=>'pais'), 'p.id = u.pais_id');
$rowset $model->getAdapter()->query($query)->fetchAll();
// vista
$this->view->usuarios $rowset
En la vista tengo los datos de ambas tablas y puedo mostrar el nombre del pais.

El problema que he tenido con esto es en el caso de paginacion al usar el adapter DbTableSelect. Cambiando el adapter funcionaria bien, pero me gusta ese adapter :D

- Otra ocasion use clases personalizadas para el Row.
Código PHP:
$model = new Usuario_Model_DbTable_Usuario();
$model->setRowClass('Usuario_Model_DbTable_UsuarioRow');
// en la clase
class Usuario_Model_DbTable_UsuarioRow extends Zend_Db_Table_Row_Abstract
{
    public function 
nombrePais(){
        
// aqui hacia otra consulta y retornaba el nombre
    
}    

El problema es que hace otra consulta para obtener el nombre, no me parece nada optimo :/

- otra cosa que intente, pero no conclui porque no lo termine de entender fueron las relaciones de tablas que da Zend: http://framework.zend.com/manual/en/zend.db.table.relationships.html

Bueno, la pregunta a la comunidad seria, ¿como lo trabajan ustedes?, cual seria la manera mas optima e eficiente al trabajar con varias tablas.

Gracias.
  #2 (permalink)  
Antiguo 04/09/2012, 13:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Consultas y Relaciones de Tablas con Zend

Usando Doctrine 2
  #3 (permalink)  
Antiguo 04/09/2012, 13:28
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: Consultas y Relaciones de Tablas con Zend

El componente Db de Zend 1.x esta lejos de ser cómodo o eficiente para trabajar, personalmente hace mucho tiempo que me tire para el lado de doctrine, preferible utilizar D1 al Db de Zend 1(El de Zend 2 es usable), en caso de querer seguir utilizando Db, mucha suerte :P.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 09/09/2012, 12:30
Avatar de ApipeMc  
Fecha de Ingreso: septiembre-2010
Ubicación: Medellín, Antioquia, Colombia
Mensajes: 76
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Consultas y Relaciones de Tablas con Zend

También he tenido problemas con la relationship de zend db. por el momento los anda trabajando haciendo model, mapper y db_abstract.
He tratado integrar el modulo de doctrine 2 y todos han sido intentos fallidos.
No he conocido un explicación clara de como integrar el modulo y como se trabaja con doctrine.

Si tienes alguno ejemplos. seria de una buena ayuda.
Gracias,

Etiquetas: Ninguno
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 09:08.