Zend_Paginator возвращают как объекты - PullRequest
4 голосов
/ 10 ноября 2010

Zend_Paginator возвращает результаты в виде стандартного массива, но мне нужно, чтобы мои результаты возвращались в качестве экземпляра класса, как мне это сделать?

Например, я хочу, чтобы все новостные статьи были так нужныэлементы, возвращаемые в качестве экземпляра News_Model_Article

Ответы [ 3 ]

6 голосов
/ 12 ноября 2010

Вы также можете создать пользовательский адаптер 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);
5 голосов
/ 10 ноября 2010

Используйте 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 и прочитать свойства объекта.

1 голос
/ 12 октября 2011

Это может быть новая функция, но если вы используете Zend_Paginator_Adapter_DbTableSelect, вы должны получить объекты (Zend_Db_Table_Row) уже.

...