Zend_Paginator作为对象返回

时间:2010-11-10 15:38:08

标签: php zend-framework pagination

Zend_Paginator将结果作为标准数组返回,但我需要将结果作为类的实例返回,我该怎么做?

例如,我想要所有新闻文章,所以需要我的项目作为News_Model_Article的实例返回

3 个答案:

答案 0 :(得分:6)

您还可以创建自定义zend paginator适配器,如:

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);

答案 1 :(得分:5)

使用Db_Table Paginator,您可以这样启动:

$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对象并读取对象属性。

答案 2 :(得分:1)

这可能是一项新功能,但如果您使用Zend_Paginator_Adapter_DbTableSelect,则应该已经获得了对象(Zend_Db_Table_Row)。