Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/11/2007, 20:57
zsamer
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 23 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($where, null);
    }
    
    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