Ejemplo n.º 1
0
 /**
  * 获取页面列表
  * 
  * 根据条件获取多条页面数据
  * 
  * @param unknown_type $where
  * @param string $order
  * @param int $limit
  */
 public function getPages($where = null, $order = null, $paginator = true, $limit = null)
 {
     $select = $this->select();
     if (is_string($where)) {
         $select->where($where);
     }
     if (is_array($where) & count($where) > 0) {
         foreach ($where as $key => $value) {
             $select->where($key . '=?', $value);
         }
     }
     if ($order) {
         $select->order($order);
     }
     if ($limit) {
         $select->limit($limit);
     }
     if ($paginator == false) {
         $result = $this->fetchAll($select);
     } else {
         $result = new Zend_Paginator_Adapter_DbTableSelect($select);
     }
     if ($result->count() > 0) {
         return $result;
     } else {
         return null;
     }
 }
Ejemplo n.º 2
0
 /**
  * @group ZF-3775
  */
 public function testSelectDoesReturnZendDbTableRowset()
 {
     $query = $this->_table->select();
     $adapter = new Zend_Paginator_Adapter_DbTableSelect($query);
     $items = $adapter->getItems(0, 10);
     $this->assertTrue($items instanceof Zend_Db_Table_Rowset);
 }
Ejemplo n.º 3
0
 /**
  * gets a listing of products based on category
  *
  * (main method used in product listings)
  *
  * @param $categoryId       category ID (can be more than one)
  * @param null $paged       current page (null, no pagination; not null contains the current page)
  * @param null $order       order clause
  * @return Zend_Db_Table_Rowset_Abstract|Zend_Paginator
  */
 public function getProductByCategory($categoryId, $paged = null, $order = null)
 {
     // creating the select statement
     // using the IN clause is suitable as $categoryId is an array of categories
     $select = $this->select()->from('product')->where('categoryId IN (?)', $categoryId);
     // ordering according to order clause
     // (e.g., array('name ASC', 'price DESC')
     if (is_array($order) === true) {
         $select->order($order);
     }
     // paginating the result
     if ($paged !== null) {
         // adapter to configure the paginator instance
         $adapter = new Zend_Paginator_Adapter_DbTableSelect($select);
         // select statement that calculates the total amount of rows returned by the main statement
         $count = clone $select;
         // reseting the cloned statement
         $count->reset(Zend_Db_Select::COLUMNS);
         $count->reset(Zend_Db_Select::FROM);
         // creating the count expression with Zend_Db_Expr
         $count->from('product', new Zend_Db_Expr('COUNT(*) as `zend_paginator_row_count`'));
         // setting the count statement in the adapter
         $adapter->setRowCount($count);
         // creating the zend paginator instance using the adapter
         $paginator = new Zend_Paginator($adapter);
         $paginator->setItemCountPerPage(5)->setCurrentPageNumber((int) $paged);
         return $paginator;
     }
     return $this->fetchAll($select);
 }
Ejemplo n.º 4
0
 public function findAnswersByQuestionId($questionId, $page = null, $limit = 10)
 {
     $select = $this->select();
     $select->from('Answer', 'id');
     $select->where('question_id = ?', intval($questionId));
     $select->where('parent_id = 0');
     $select->order('created_at');
     if (null !== $page) {
         $adapter = new Zend_Paginator_Adapter_DbTableSelect($select);
         $count = clone $select;
         $count->reset(Zend_Db_Select::COLUMNS);
         $count->reset(Zend_Db_Select::FROM);
         $count->from('Answer', new Zend_Db_Expr('COUNT(*) AS `zend_paginator_row_count`'));
         $adapter->setRowCount($count);
         $paginator = new Zend_Paginator($adapter);
         $paginator->setItemCountPerPage(intval($limit))->setCurrentPageNumber(intval($page));
         return $paginator;
     }
 }
Ejemplo n.º 5
0
 public function getUsers($paged = false, $order = null)
 {
     $select = $this->select();
     if (true === is_array($order)) {
         $select->order($order);
     }
     if (null !== $paged) {
         $adapter = new Zend_Paginator_Adapter_DbTableSelect($select);
         $count = clone $select;
         $count->reset(Zend_Db_Select::COLUMNS);
         $count->reset(Zend_Db_Select::FROM);
         $count->from('user', new Zend_Db_Expr('COUNT(*) AS `zend_paginator_row_count`'));
         $adapter->setRowCount($count);
         $paginator = new Zend_Paginator($adapter);
         $paginator->setItemCountPerPage(15)->setCurrentPageNumber((int) $paged);
         return $paginator;
     }
     return $this->fetchAll($select);
 }
 /**
  * Get a list of product by their category
  *
  * @param  int|array $categoryId The category id(s)
  * @param  boolean   $paged      Use Zend_Paginator?
  * @param  array     $order      Order results
  * @return Zend_Db_Table_Rowset|Zend_Paginator
  */
 public function getProductsByCategory($categoryId, $paged = null, $order = null)
 {
     $select = $this->select();
     $select->from('product')->where("categoryId IN(?)", $categoryId);
     if (true === is_array($order)) {
         $select->order($order);
     }
     if (null !== $paged) {
         $adapter = new Zend_Paginator_Adapter_DbTableSelect($select);
         $count = clone $select;
         $count->reset(Zend_Db_Select::COLUMNS);
         $count->reset(Zend_Db_Select::FROM);
         $count->from('product', new Zend_Db_Expr('COUNT(*) AS `zend_paginator_row_count`'));
         $adapter->setRowCount($count);
         $paginator = new Zend_Paginator($adapter);
         $paginator->setItemCountPerPage(5)->setCurrentPageNumber((int) $paged);
         return $paginator;
     }
     return $this->fetchAll($select);
 }
Ejemplo n.º 7
0
 /**
  * Returns an array of Entry items for a page.
  *
  * @param  integer $offset Page offset
  * @param  integer $itemCountPerPage Number of items per page
  * @return array
  */
 public function getItems($offset, $itemCountPerPage)
 {
     $entryRowset = parent::getItems($offset, $itemCountPerPage);
     $entries = array();
     /* @var $entryRow Zend_Db_Table_Row_Abstract */
     foreach ($entryRowset as $entryRow) {
         $entry = $this->_entryMapper->createEntryFromRow($entryRow);
         $entries[] = $entry;
     }
     return $entries;
 }
Ejemplo n.º 8
0
 public function getOutboxPaginator(User_Model_User $user)
 {
     $paginator = new Zend_Paginator_Adapter_DbTableSelect($this->getOutboxSelect($user));
     $paginator->setRowCount($this->getOutboxCountSelect($user));
     return new Zend_Paginator($paginator);
 }
Ejemplo n.º 9
0
 /**
  * @param $baseSelect
  * @param int $page
  * @param null $countSelect
  * @return Zend_Paginator
  */
 protected function _paginator($baseSelect, $page = 0, $countSelect = null)
 {
     $adapter = new Zend_Paginator_Adapter_DbTableSelect($baseSelect);
     if (null != $countSelect) {
         $adapter->setRowCount($countSelect);
     }
     $paginator = new Zend_Paginator($adapter);
     $paginator->setDefaultItemCountPerPage($this->_maxItemsOnPage);
     if (!empty($page)) {
         $paginator->setCurrentPageNumber($page);
     }
     return $paginator;
 }
Ejemplo n.º 10
0
 public function getItems($offset, $itemCountPerPage)
 {
     $resultSet = parent::getItems($offset, $itemCountPerPage);
     $models = $this->getModelsFromResultSet($resultSet);
     return $models;
 }
Ejemplo n.º 11
0
 public function paginator($namespace = null, $moreActions = array())
 {
     $this->getFilterData($namespace);
     if (!$this->paginator) {
         $db = $this->dbModelTable;
         $expr = new Zend_Db_Expr('(' . $this->getSql() . ')');
         $select = $db->select()->from($expr)->setIntegrityCheck(false);
         if (isset($this->sort) && isset($this->order)) {
             $select->order($this->sort . ' ' . $this->order);
         }
         $adapter = new Zend_Paginator_Adapter_DbTableSelect($select);
         if ($this->getCountSql()) {
             $adapter->setRowCount($db->select()->from(new Zend_Db_Expr('(' . $this->getCountSql() . ')'), array(Zend_Paginator_Adapter_DbSelect::ROW_COUNT_COLUMN => 'zend_paginator_row_count'))->setIntegrityCheck(false));
         }
         $paginator = new Base_Paginator($adapter, $moreActions);
         $paginator->setCurrentPageNumber(isset($this->page) ? $this->page : 1);
         if ($this->page_size) {
             $paginator->setItemCountPerPage($this->page_size);
         }
         $this->paginator = $paginator;
     }
     return $this->paginator;
 }