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

Zend_Db_Select o Zend_Db_Table

Estas en el tema de Zend_Db_Select o Zend_Db_Table en el foro de Zend en Foros del Web. Bueno, la verdad que no se si este post esta para que pongamos las cosas del ZendFramework o no, pero ya que estamos lo tiro ...
  #1 (permalink)  
Antiguo 04/11/2007, 11:38
 
Fecha de Ingreso: enero-2004
Ubicación: Argentina, Buenos Aires, Mar del Plata
Mensajes: 38
Antigüedad: 20 años, 11 meses
Puntos: 0
Zend_Db_Select o Zend_Db_Table

Bueno, la verdad que no se si este post esta para que pongamos las cosas del ZendFramework o no, pero ya que estamos lo tiro por aca. La verdad que me hubiera gustado mucho mas un sub-foro porque creo que es mucha la gente que hace preguntas especificamente de este framework y la informacion de este modo queda bastante desordenada a la hora de hacer un vistazo rapido de que temas se han expuesto sobre el mismo recientemente.

Pero bueno, en fin...

Zend_Db_Select o Zend_Db_Table


Bueno, la verdad es que estuve utilizando un poco estas 2 clases del framework y si bien al principio hacia casi todo con Zend_Db_Table, tuve que empezar a usar Zend_Db_Select dado que mis consultas iban poniendose cada vez mas complejas con joins, group by, having y no veia forma de realizarlas con Zend_Db_Table. Hay ?

Dado esto, estoy utilizando para casi todo Zend_Db_Select ya que me deja hacer practicamente todo, pero la curiosidad me lleva a preguntar si alguien tiene idea en que casos convendria utilizar la otra implementacion (Zend_Db_Table).

Saludos,
Fernando.
  #2 (permalink)  
Antiguo 04/11/2007, 14:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Zend_Db_Select o Zend_Db_Table

La idea del postit de Zend Framework es para compartir links o tutoriales acerca de ese framework, si necesitas ayuda puedes hacer una pregunta general.

Como dato adicional, creo las dos herramientas estan para eso, si necesitas hacer consultas muy complicadas, no hay como hacer un SELECT directamente sobre tu capa de modelo, por eso es importante tener una capa de modelo bien planeada, no importa si por dentro uses un objeto directamente o hagas un SELECT directamente a tu fuente de datos.

Saludos.
  #3 (permalink)  
Antiguo 04/11/2007, 15:07
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 21 años
Puntos: 8
Re: Zend_Db_Select o Zend_Db_Table

Puedes echar una mirada a Zend_Db_Table Relationships.
  #4 (permalink)  
Antiguo 04/11/2007, 15:23
 
Fecha de Ingreso: enero-2004
Ubicación: Argentina, Buenos Aires, Mar del Plata
Mensajes: 38
Antigüedad: 20 años, 11 meses
Puntos: 0
Re: Zend_Db_Select o Zend_Db_Table

Cita:
Iniciado por zsamer Ver Mensaje
Puedes echar una mirada a Zend_Db_Table Relationships.
Si, efectivamente. Antes de hacer el post le di una leida al manual, y a esa parte tambien. Pero mi pregunta era mas a nivel conceptual, que beneficios tengo usando Zend_Db_Table, porque veo que para usar las relaciones hay que crear varias reglas engorrosas cuando tirando directamente la consulta sobre la base de datos usando Zend_Db_Select no deberia tener problema.

Saludos.
  #5 (permalink)  
Antiguo 04/11/2007, 20:57
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 21 años
Puntos: 8
Re: Zend_Db_Select o Zend_Db_Table

Personalmente todas los accesos a la base de datos (persistencia) la manejo en una clase de modelo por tabla, de la siguiente forma:

Código PHP:
class News_Model_News extends Zend_Db_Table_Abstract
{
    protected 
$_primary 'id';
    protected 
$_name 'news';

    public function 
getNewsListForMonthYear($month$year) {

        
$db $this->getAdapter();
        
$select $db->select();
        
$select->from(array('n' => $this->_name), array('id''posterid''postername''subject''time'));
        
$select->joinLeft(array('p' => 'users'),'n.posterid = p.user_id',array('username'));
        
$select->where('n.month = ?'$month);
        
$select->where('n.year = ?'$year);
        
$select->where('n.active= ?'1);
        
$select->order('n.id DESC');

        return 
$db->fetchAll($select->__toString());
    }

    public function 
getListNews() {
        return 
$this->fetchAll();
    }

    public function 
getNews$news_id ) {
        
$db $this->getAdapter();
        
$where $db->quoteInto('id = ?'$news_id);
        return 
$this->fetchRow($wherenull);
    }
    
    public function 
delete($news_id){
        
$db $this->getAdapter();
        
$where $db->quoteInto('id = ?'$news_id);
        
$rowsAffected parent::delete($where);
        return 
$rowsAffected;
    }

Como veras todo el modelo de una tabla queda en una sola clase y aprovecho esta para hacer consultas más elaboradas utilizando Zend_Db_Select.

En definitiva Zend_Db_Select o Zend_Db_Table la utilizo dentro del contexto de la clase Modelo (Zend_Db_Table_Abstract), Zend_Db_Select en casos de consultas más complejas.

Última edición por zsamer; 04/11/2007 a las 21:05
  #6 (permalink)  
Antiguo 05/11/2007, 12:13
 
Fecha de Ingreso: enero-2004
Ubicación: Argentina, Buenos Aires, Mar del Plata
Mensajes: 38
Antigüedad: 20 años, 11 meses
Puntos: 0
Re: Zend_Db_Select o Zend_Db_Table

Veo, muy bueno el aporte. Voy a seguir investigando. Igualmente por ahora parece que me encariñe con el Zend_Db_Select jejeje.

Saludos,
Fernando.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 06:16.