所以我认为 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,您可以简单地从中构建一个选择查询,然后发送它。如果没有,您可以创建一个实例并发送它,请参阅文档中的示例:
$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 http://framework.zend.com/manual/en/zend.paginator.usage.html#zend.paginator.usage.dbselect
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)