加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

php – 如何使用zend paginate而不加载数据库的所有结果

发布时间:2020-12-11 23:49:18 所属栏目:MySql教程 来源:网络整理
导读:所以我看到zend paginate工作的方式是你做的: $paginator = Zend_Paginator::factory($results);$paginator-setItemCountPerPage($itemCount);$paginator-setPageRange($pageRange); 其中$results是以数据库形式从数据库加载一堆项的结果 "SELECT * FROM ta

所以我看到zend paginate工作的方式是你做的:

$paginator = Zend_Paginator::factory($results);
$paginator->setItemCountPerPage($itemCount);
$paginator->setPageRange($pageRange);

其中$results是以数据库形式从数据库加载一堆项的结果

"SELECT * FROM table WHERE etc"

然后zend paginate将计算结果数并自动生成页面范围…

但是如果你这样做,那么你将不得不获取数据库的所有结果,我认为这是一种浪费,因为一次只显示一个页面,因此你只需要获取该页面的项目……

如何使zend paginate能够计算正确的页面范围和数字而无需获取整个表的所有结果?

最佳答案 使用工厂方法,您可以发送Zend_Db_Select或Zend_Db_Table_Select的实例.如果你是类扩展Zend_Db_Table_Abstract,你可以简单地从它构建一个select查询,然后发送它.如果没有,您可以创建实例并发送它,请参阅文档中的示例:

    $adapter = new Zend_Paginator_Adapter_DbSelect($db->select()->from('posts'));
    $adapter->setRowCount(
        $db->select()
           ->from(
                'item_counts',array(
                   Zend_Paginator_Adapter_DbSelect::ROW_COUNT_COLUMN => 'post_count'
                )
             )
    );

$paginator = new Zend_Paginator($adapter)

http://framework.zend.com/manual/en/zend.paginator.usage.html#zend.paginator.usage.dbselect

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读