Foros del Web » Programación para sitios web » PHP » Frameworks y PHP orientado a objetos »

Zend tablas relacionadas

Estas en el tema de tablas relacionadas en el foro de Frameworks y PHP orientado a objetos 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, 12:04
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
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, 12:10
Avatar de masterpuppet
Object Bigot
 
Fecha de Ingreso: enero-2008
Ubicación: Las Palmas, Gran Canaria
Mensajes: 2.323
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.
__________________
"If you can't be a good example, then you'll just have to serve as a horrible warning." C. Aird
  #3 (permalink)  
Antiguo 31/01/2012, 12:12
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
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, 12:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/gdl/
Mensajes: 35.878
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, 12:25
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
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, 12:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/gdl/
Mensajes: 35.878
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, 13:23
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
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, 13:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/gdl/
Mensajes: 35.878
Respuesta: tablas relacionadas

¿Que error?
  #9 (permalink)  
Antiguo 31/01/2012, 13:58
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
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, 14:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/gdl/
Mensajes: 35.878
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, 14:17
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
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, 14:30
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
Respuesta: tablas relacionadas

me parece que el problema es con la tabla clientes, como hago para nombrarla.??
  #13 (permalink)  
Antiguo 31/01/2012, 14:36
Avatar de masterpuppet
Object Bigot
 
Fecha de Ingreso: enero-2008
Ubicación: Las Palmas, Gran Canaria
Mensajes: 2.323
Respuesta: tablas relacionadas

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

Saludos.
__________________
"If you can't be a good example, then you'll just have to serve as a horrible warning." C. Aird
  #14 (permalink)  
Antiguo 31/01/2012, 14:44
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
Respuesta: tablas relacionadas

SetEnv APPLICATION_ENV development en el .htaccess
  #15 (permalink)  
Antiguo 31/01/2012, 14:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/gdl/
Mensajes: 35.878
Respuesta: tablas relacionadas

¿Tienes también el: resources.frontController.params.displayExceptions = 1 en tu config.ini?
  #16 (permalink)  
Antiguo 31/01/2012, 14:51
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
Respuesta: tablas relacionadas

mmm, no ese lo tengo en cero
  #17 (permalink)  
Antiguo 31/01/2012, 14:52
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
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, 14:54
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
Respuesta: tablas relacionadas

mensaje : Select query cannot join with another table
  #19 (permalink)  
Antiguo 31/01/2012, 15:02
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
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, 15:03
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
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, 15:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/gdl/
Mensajes: 35.878
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, 15:04
Avatar de masterpuppet
Object Bigot
 
Fecha de Ingreso: enero-2008
Ubicación: Las Palmas, Gran Canaria
Mensajes: 2.323
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.
__________________
"If you can't be a good example, then you'll just have to serve as a horrible warning." C. Aird
  #23 (permalink)  
Antiguo 31/01/2012, 15:08
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
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, 15:11
Avatar de masterpuppet
Object Bigot
 
Fecha de Ingreso: enero-2008
Ubicación: Las Palmas, Gran Canaria
Mensajes: 2.323
Respuesta: tablas relacionadas

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

Saludos.
__________________
"If you can't be a good example, then you'll just have to serve as a horrible warning." C. Aird
  #25 (permalink)  
Antiguo 31/01/2012, 15:16
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
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, 15:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/gdl/
Mensajes: 35.878
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, 15:58
Avatar de masterpuppet
Object Bigot
 
Fecha de Ingreso: enero-2008
Ubicación: Las Palmas, Gran Canaria
Mensajes: 2.323
Respuesta: tablas relacionadas

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

DOCTRINEMODULE
DOCTRINEORMMODULE
DOCTRINEMONGOODMMODULE

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

Saludos.
__________________
"If you can't be a good example, then you'll just have to serve as a horrible warning." C. Aird
  #28 (permalink)  
Antiguo 01/02/2012, 09:10
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
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, 09:12
 
Fecha de Ingreso: diciembre-2008
Mensajes: 765
Respuesta: tablas relacionadas

ya lo solucione, muchas gracias me faltaba colcoar esto: array('c.*'));
¿Nuevo en el foro? Regístrate



La zona horaria es GMT -6. Ahora son las 08:48.
SEO by vBSEO 3.3.2