【发布时间】:2011-05-07 23:10:14
【问题描述】:
Zend_Paginator 将结果作为标准数组返回,但我需要将结果作为类的实例返回,我该怎么做?
例如,我想要所有新闻文章,因此需要我的项目作为 News_Model_Article 的实例返回
【问题讨论】:
标签: php zend-framework pagination
Zend_Paginator 将结果作为标准数组返回,但我需要将结果作为类的实例返回,我该怎么做?
例如,我想要所有新闻文章,因此需要我的项目作为 News_Model_Article 的实例返回
【问题讨论】:
标签: php zend-framework pagination
使用 Db_Table 分页器,您可以这样启动它:
$table = new Your_Zend_DbTable(); // Asuming this has configured the $rowClass property
$paginator = Zend_Paginator::factory($table->select());
$paginator->setItemCountPerPage(10);
$paginator->setCurrentPageNumber(1);
然后你可以循环 $paginator 对象并读取对象属性。
【讨论】:
您还可以创建自定义的 zend 分页器适配器,例如:
class Application_Paginator_Adapter extends Zend_Paginator_Adapter_DbSelect
{
public function getItems($offset, $itemCountPerPage)
{
$this->_select->limit($itemCountPerPage, $offset);
$rowset = $this->_select->getTable()->fetchAll($this->_select);
$articleModels = array();
foreach($rowset as $row) {
$model = new News_Model_Article();
$model->setTitle($row->article_title);
...........
$articleModels[] = $model;
}
return $articleModels;
}
}
如下使用:
$adapter = new Application_Paginator_Adapter();
$paginator = new Zend_Paginator($adapter);
【讨论】:
这可能是一个新功能,但如果您使用Zend_Paginator_Adapter_DbTableSelect,您应该已经获取对象 (Zend_Db_Table_Row)。
【讨论】:
Zend_Paginator_Adapter_DbTableSelect,它开箱即用。