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

tablas relacionadas

Estas en el tema de tablas relacionadas en el foro de Zend en Foros del Web. Buenas!!!!, una consulta como hago en zend framework para consultar 2 tablas que estan relacionadas, por ejemplo en php basico lo hago con inner join? ...
  #1 (permalink)  
Antiguo 31/01/2012, 13:04
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
tablas relacionadas

Buenas!!!!, una consulta como hago en zend framework para consultar 2 tablas que estan relacionadas, por ejemplo en php basico lo hago con inner join? muchas gracias!!!
  #2 (permalink)  
Antiguo 31/01/2012, 13:10
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: tablas relacionadas

Que estas utilizando ? Zend_Db ?, en caso afirmativo puedes utilizar Zend_Db_Statement y/o Zend_Db_Select y/o Zend_Db_Table Relationships.
El manual es tu amigo que sugiero que le des una ojeada.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 31/01/2012, 13:12
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

Bien, bien, muchas gracias, pero este es mi codigo.

Código PHP:
class Qnovedades_Model_DbTable_Novedades extends Zend_Db_Table_Abstract
{

    protected 
$_nd 'novedades_diarias';
    protected 
$_clie 'clientes'
  #4 (permalink)  
Antiguo 31/01/2012, 13:20
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: tablas relacionadas

Ese es solo el código de tu DBTable, como ya te dijo @masterpuppet debes de usar ya sea Zend_Db_Select, o Zend_Db_Table Relationship si lo quieres de una forma más automatica.

En el peor de los casos puedes enviar un Query directamente con un INNER JOIN y traer los datos que quieres.
  #5 (permalink)  
Antiguo 31/01/2012, 13:25
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

si, ahora estoy tratando de ver como funciona, muchas gracias. ahhh disculpen una consulta mas? siempre hay que declarar el nombre de la bd asi?

protected $_name.

por que cuando coloco otro nombre me da error, por ejemplo
protected $_clie
  #6 (permalink)  
Antiguo 31/01/2012, 13:32
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: tablas relacionadas

Sí, el nombre de la tabla debe de ir en el atributo $_name para que Zend lo utilize como nombre de la tabla en sus queries, de lo contrario toma el nombre de la clase.

Saludos.
  #7 (permalink)  
Antiguo 31/01/2012, 14:23
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

hice esto pero directamente me sale error!!

Código PHP:
public function nd_cl()
{
        
$select $this->select();
        
$select->from(array('o' => 'clientes'), array('o.*'));
        
$select->join(array('r' => 'novedades_diarias'), 'o.id_categoria = r.id_categoria', array());
        


muchas gracias!!!
  #8 (permalink)  
Antiguo 31/01/2012, 14:55
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: tablas relacionadas

¿Que error?
  #9 (permalink)  
Antiguo 31/01/2012, 14:58
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

An error occurred
Application error

y esto tengo en mi controlador

public function indexAction()
{
$nd = new Qnovedades_Model_DbTable_Novedades();

$this->view->entries = $nd->nd_cl();
//$nd = $nd->fetchAll();
//Zend_Debug::dump($nd);

}
  #10 (permalink)  
Antiguo 31/01/2012, 15: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: tablas relacionadas

Setea tu environment a development y asegurate que tienes phpSettings.display_startup_errors = 1 en tu config.ini para que veas lo errores más detalladamente.

Saludos.
  #11 (permalink)  
Antiguo 31/01/2012, 15:17
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

esta seteado, pero no se bien, el error es del join, por que le saco esa funcion y me muestra solo lo de una sola tabla.
  #12 (permalink)  
Antiguo 31/01/2012, 15:30
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

me parece que el problema es con la tabla clientes, como hago para nombrarla.??
  #13 (permalink)  
Antiguo 31/01/2012, 15:36
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: tablas relacionadas

Estas seguro que APPLICATION_ENV esta a development ? porque deberia mostrarte el mensaje de la excepción.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #14 (permalink)  
Antiguo 31/01/2012, 15:44
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

SetEnv APPLICATION_ENV development en el .htaccess
  #15 (permalink)  
Antiguo 31/01/2012, 15:50
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: tablas relacionadas

¿Tienes también el: resources.frontController.params.displayExceptions = 1 en tu config.ini?
  #16 (permalink)  
Antiguo 31/01/2012, 15:51
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

mmm, no ese lo tengo en cero
  #17 (permalink)  
Antiguo 31/01/2012, 15:52
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

ahhh bien, bien ahora si salen los errores mas detallado, ese es el que sale.
0 /var/www/qaz/library/Zend/Db/Adapter/Abstract.php(456): Zend_Db_Table_Select->assemble()
  #18 (permalink)  
Antiguo 31/01/2012, 15:54
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

mensaje : Select query cannot join with another table
  #19 (permalink)  
Antiguo 31/01/2012, 16:02
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

lo mas logico que dice ahi me imagino que no se puede conectar o hacer join con la otra tabla
  #20 (permalink)  
Antiguo 31/01/2012, 16:03
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

agregue esta linea $select->setIntegrityCheck(false); y ahora me sale el siguiente mensaje:

Specified column "idcliente" is not in the row
  #21 (permalink)  
Antiguo 31/01/2012, 16:03
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: tablas relacionadas

Para que puedas hacer el join desde un DbTableSelect tienes que usar setIntegrityCheck(false), eso hace que Zend te devuelva el conjunto de resultados pero en un modo readOnly.

Saludos.
  #22 (permalink)  
Antiguo 31/01/2012, 16:04
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: tablas relacionadas

Ese mensaje deberia ser suficiente para encontrar info en san google, el problema debe ser el de siempre setIntegrityCheck, cada vez que veo Zend_Db no comprendo como pueden perder tiempo adaptando ese paquete a Zend 2.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #23 (permalink)  
Antiguo 31/01/2012, 16:08
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

bien ya estaba adaptado, pero me sale el siguiente mensaje
Specified column "idcliente" is not in the row.
muchas gracias por la ayuda, estoy tratando de resolver ese problema, y estoy colocando lo que voy haciendo, con buenos resultado, para que a la persona que le pase lo mismo, se pueda servir esto
  #24 (permalink)  
Antiguo 31/01/2012, 16:11
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: tablas relacionadas

Ese es el nombre de la columna ? no es id_cliente ? comprueba el nombre de la columna.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #25 (permalink)  
Antiguo 31/01/2012, 16:16
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

bien, ya encontre el error, estaba en la vista, que al llamar al campo que lo muestra estaba colocando otro nombre .

Muchas Gracias y Saludos

Contento de que Exitas este foro y personas que saben como ayudar.
  #26 (permalink)  
Antiguo 31/01/2012, 16:18
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: tablas relacionadas

Cita:
Iniciado por masterpuppet Ver Mensaje
Ese mensaje deberia ser suficiente para encontrar info en san google, el problema debe ser el de siempre setIntegrityCheck, cada vez que veo Zend_Db no comprendo como pueden perder tiempo adaptando ese paquete a Zend 2.

Saludos.
Lo sé, deberían mejor de hacer una buena integración para Doctrine y apoyarlos, entre los ingenieros de Zend y los de Doctrine podrían hacer maravillas.
  #27 (permalink)  
Antiguo 31/01/2012, 16:58
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: tablas relacionadas

La integración esta echa GatorV en los módulos

DOCTRINEMODULE
DOCTRINEORMMODULE
DOCTRINEMONGOODMMODULE

y por fin http://modules.zendframework.com/

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #28 (permalink)  
Antiguo 01/02/2012, 10:10
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

una consulta, hice el join, y funciono, pero en la vista la llamar al campo de una de las tablas me sale error como que no existe ese campo, y si coloco el campo de la otra tabla funciona bien, como hago para que me tome los campos de las 2 tablas?? muchas gracias
  #29 (permalink)  
Antiguo 01/02/2012, 10:12
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 11 meses
Puntos: 20
Respuesta: tablas relacionadas

ya lo solucione, muchas gracias me faltaba colcoar esto: array('c.*'));

Etiquetas: framework, php, relacionadas, 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 23:15.