Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
protected $_referenceMap = array(
'Units' => array(
'columns' => 'unit_id',
'refTableClass' => 'Units'
'refColumns' => 'unit_id',
'onDelete' => self::CASCADE,
'onUpdate' => self::RESTRICT
) //, ну и для второго тоже
);
class Users extends Zend_Db_Table_Abstract
{
protected $_primary = 'id';
public function getAll()
{
return $this->fetchAll();
}
}
class User extends Zend_Db_Table_Row_Abstract
{
protected $_commentsCount = 0;
public function init()
{
parent::init();
if (array_key_exists('commentsCount', $this->_data)) {
$this->_commentsCount = (int)$this->_data['commentsCount'];
unset($this->_data['commentsCount']);
}
}
public function getCommentsCount()
{
return $this->_commentsCount;
}
}
class Users extends Zend_Db_Table_Abstract
{
protected $_primary = 'id';
protected $_rowClass = 'User';
public function getAll()
{
$select = $this->select()
->from(array('u' => 'Users'))
->joinLeft(array('c' => 'Comments'), 'c.user_id = u.id', array(
'commentsCount' => new Zend_Db_Expr('COUNT(c.*)')
))
->group('u.id');
return $this->fetchAll($select);
}
}
class User extends Zend_Db_Table_Row_Abstract
{
protected $_commentsCount;
public function getCommentsCount()
{
if ($this->_commentsCount === null) {
/**
* @var Zend_Db_Table_Abstract $comments
*/
$comments = $this->getTable()->getReference('Comments');
$select = $comments->select()
->columns(array('commentsCount' => new Zend_Db_Expr('COUNT(*)')))
->where('user_id = ?', $this->id);
$row = $comments->fetchRow($select);
$this->_commentsCount = (int)$row->commentsCount;
}
return $this->_commentsCount;
}
}
class Users extends Zend_Db_Table_Abstract
{
protected $_primary = 'id';
protected $_rowClass = 'User';
public function getAll()
{
return $this->fetchAll();
}
}
echo '' . print_r($row->toArray(), true) . '
' . PHP_EOL;print Zend_Debug::dump($row);
Zend_Db_Table простота в использовании