Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/11/2007, 20:57
zsamer
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
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