如何为大数据集设置zend分页?

时间:2013-05-17 11:17:04

标签: php zend-framework pagination

我想为大量数据集设置分数说成千上万。 如果您一次获取所有数据,性能将会很慢。所以我需要一个更好的方法:

在我的控制器中,我有以下代码:

    $result = $result = $this->fetchAll($this->select()
                                            ->where('id='.$id)
                                            ->order('date DESC'))->toArray();
    $paginator = Zend_Paginator::factory($data);
    $pageNumber = $this->_getParam('page');       
    $paginator->setCurrentPageNumber($pageNumber);
    $paginator->setItemCountPerPage(10);
    $this->view->data = $paginator;

此代码将立即获取所有数据库内容。

2 个答案:

答案 0 :(得分:1)

试试这个

    $select = $this->select()->where('id='.$id)
                             ->order('date DESC');

    $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbSelect($select));
    $pageNumber = $this->_getParam('page');       
    $paginator->setCurrentPageNumber($pageNumber);
    $paginator->setItemCountPerPage(10);
    $this->view->data = $paginator; 

答案 1 :(得分:0)

试试这个:

$select = new Zend_Paginator_Adapter_DbSelect($sql);
$select->count($select);
$paginator = new Zend_Paginator($select);

您可以从此处获取更多详细信息:

Paginating data collection