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;
发布了34 篇原创文章 · 获赞 4 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Tianyi_liang/article/details/105638694