public function indexAction() { $bookTable = new Book_Model_DbTable_Books(); $signatureTable = new Book_Model_DbTable_Signatures(); $signatureTableName = $signatureTable->info('name'); $bookSelect = $bookTable->getSelect()->order("{$signatureTableName}.rating_count DESC"); $this->view->paginator = $paginator = Zend_Paginator::factory($bookSelect); if ($paginator->getTotalItemCount() == 0) { return $this->setNoRender(); } $paginator->setItemCountPerPage($this->_getParam('itemCountPerPage', 12)); $paginator->setCurrentPageNumber($this->_getParam('page', 1)); }
public function getSelect($selectedColumns = null) { $signatureTable = new Book_Model_DbTable_Signatures(); $signatureTableName = $signatureTable->info(Zend_Db_Table_Abstract::NAME); $tableName = $this->info(Zend_Db_Table_Abstract::NAME); // TODO [DangTH] : check again $tablePrimaryKey = current($this->info(Zend_Db_Table_Abstract::PRIMARY)); if ($selectedColumns == null) { $select = $this->select()->from($tableName, $this->_selectedColumns); } else { $select = $this->select()->from($tableName, $selectedColumns); } $select->setIntegrityCheck(false); $select->joinLeft($signatureTableName, "{$signatureTableName}.parent_object_id = {$tableName}.{$tablePrimaryKey}"); $select->where("{$signatureTableName}.parent_object_type = ?", $this->_getType()); $select->group("{$tableName}.{$tablePrimaryKey}"); return $select; }
public function getParentObject() { if (!empty($this->parent_id) && !empty($this->parent_type)) { if (Engine_Api::_()->hasItemType($this->parent_type)) { $table = Engine_Api::_()->getItemTable($this->parent_type); $tableName = $table->info(Zend_Db_Table_Abstract::NAME); $tablePrimaryKey = current($table->info(Zend_Db_Table_Abstract::PRIMARY)); $signatureTable = new Book_Model_DbTable_Signatures(); $signatureTableName = $signatureTable->info(Zend_Db_Table_Abstract::NAME); $select = $table->select()->setIntegrityCheck(false)->from($tableName); $select->join($signatureTableName, "{$tableName}.{$tablePrimaryKey} = {$signatureTableName}.parent_object_id", array("{$signatureTableName}.view_count", "{$signatureTableName}.favorite_count", "{$signatureTableName}.rating_count", "{$signatureTableName}.rating")); $select->where("{$signatureTableName}.parent_object_type = ?", $this->parent_type); $select->where("{$tableName}.{$tablePrimaryKey} = ?", $this->parent_id); return $table->fetchRow($select); } } return NULL; }