Zend_Paginator 分頁時如何分開查詢以避開數據量大的表

$db = Zend_Db_Table_Abstract::getDefaultAdapter();
$select = $db->select()
             ->from(array('c' => 'controller'), array('id', 'name', 'desc'))
             ->join(array('m' => 'module'), 'c.module_id = m.id', array('module_name' => 'name'))
             ->join(array('v' => 'visit_log'), 'v.id = (SELECT v2.id FROM visit_log v2 WHERE v2.controller_id = c.id ORDER BY visit_time DESC LIMIT 1)', array('visit_time'));
$countSelect = $db->select()
                  ->from('controller', array(Zend_Paginator_Adapter_DbSelect::ROW_COUNT_COLUMN => 'COUNT(*)'));

$adapter = new Zend_Paginator_Adapter_DbSelect($select);
$adapter->setRowCount($countSelect);

Zend_Paginator::setDefaultScrollingStyle('Sliding');
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination-control-default.phtml');

$paginator = new Zend_Paginator($adapter);
$paginator->setItemCountPerPage(30)
          ->setPageRange(10)
          ->setCurrentPageNumber($this->getQuery('page'));
$this->view->paginator = $paginator;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章