public function getResults($hydrationMode = Doctrine::HYDRATE_RECORD) { if (!$this->getQuery()->getConnection() instanceof Doctrine_Connection_Mysql) { return parent::getResults($hydrationMode); } return $this->results; }
public function getResults() { if (is_null($this->results)) { $this->getQuery()->orderBy($this->sqlOrderColumn . ' ' . $this->sqlOrder); $this->results = parent::getResults(); if ($this->sqlOrder !== $this->listOrder) { $obj = new Doctrine_Collection($this->results->getTable(), $this->results->getKeyColumn()); $obj->fromArray(array_reverse($this->results->toArray(true))); $this->results = $obj; } } return $this->results; }
public function executeIndex(sfWebRequest $request) { $this->buildParams(); $pager = new sfDoctrinePager($this->modelClass, 10); $pager->setQuery($this->buildQuery($request)); $pager->setPage($this->getRequestParameter('page', 1)); $pager->init(); $this->pager = $pager; aBlogItemTable::populatePages($pager->getResults()); if ($this->getRequestParameter('feed', false)) { $this->getFeed(); return sfView::NONE; } }
/** * Get results * * @param mixed $hydrationMode Doctrine hydration mode * @return array|Doctrine_Collection Results * @author relo_san * @since march 10, 2010 */ public function getResults($hydrationMode = null) { if ($this->useCache) { if (isset($this->cache['data'])) { return $this->cache['data']; } $this->setTableMethod($this->cacheManager->getQueryMethod($this->cacheRoute)); $hydrationMode = Doctrine::HYDRATE_ARRAY; } $results = parent::getResults($hydrationMode); if ($this->useCache && isset($this->cache['pager'])) { $results = $this->cacheManager->prepareTranslations($results); $this->cache['data'] = $results; $this->cacheManager->setContent($this->cacheRoute, $this->cache, $this->getClass(), array_merge(array('page' => $this->getPage()), $this->queryParams)); } return $results; }
public function executeIndex(sfWebRequest $request) { $this->buildParams(); $this->max_per_page = $this->getUser()->getAttribute('max_per_page', sfConfig::get('app_aBlog_max_per_page', 20), 'apostropheBlog_prefs'); $pager = new sfDoctrinePager($this->modelClass); $pager->setMaxPerPage($this->max_per_page); $pager->setQuery($this->buildQuery($request)); $pager->setPage($this->getRequestParameter('page', 1)); $pager->init(); $this->pager = $pager; aBlogItemTable::populatePages($pager->getResults()); if ($request->hasParameter('year') || $request->hasParameter('month') || $request->hasParameter('day') || $request->hasParameter('cat') || $request->hasParameter('tag')) { // Forbid combinations of filters for bots like Google. This prevents aggressive overspidering // of the same data $this->getResponse()->addMeta('robots', 'noarchive, nofollow'); } if ($this->getRequestParameter('feed', false)) { $this->getFeed(); return sfView::NONE; } return $this->pageTemplate; }
/** * Get results for the pager instance * * @param integer $hydrationMode Doctrine::HYDRATE_* constants * @return mixed Doctrine_Collection/array */ public function getResults($hydrationMode = Doctrine::HYDRATE_RECORD) { if ($this->results) { return $this->results; } else { return parent::getResults($hydrationMode); } }
$pager->init(); $t->is($pager->getQuery()->getSqlQuery(), 'SELECT a.id AS a__id, a.name AS a__name, a.type AS a__type FROM author a WHERE (a.id > 0) LIMIT 25'); $t->ok($pager->isFirstPage()); $pager->setPage(2); $pager->init(); $t->is($pager->getQuery()->getSqlQuery(), 'SELECT a.id AS a__id, a.name AS a__name, a.type AS a__type FROM author a WHERE (a.id > 0) LIMIT 25 OFFSET 25'); $t->is($pager->getQuery()->count(), $total); $t->ok($pager->isLastPage()); $results = $pager->getResults(); $t->is(gettype($results), 'object'); $t->is(get_class($results), 'Doctrine_Collection'); $t->is(count($results), $numPerPage); $t->is($pager->getCountQuery()->count(), $total); $pager = new sfDoctrinePager('Author', $numPerPage); $pager->setTableMethod('testTableMethod'); $pager->setPage(1); $pager->init(); $results = $pager->getResults(Doctrine::HYDRATE_ARRAY); $t->is(gettype($results), 'array'); $t->is(count($results), $numPerPage); $pager = new sfDoctrinePager('Author', $numPerPage); $pager->setTableMethod('testTableMethod2'); $pager->setQuery(Doctrine_Query::create()->from('Author a')->where('a.id < 9999999')); $pager->setPage(1); $pager->init(); $t->is($pager->getQuery()->getSqlQuery(), 'SELECT a.id AS a__id, a.name AS a__name, a.type AS a__type FROM author a WHERE (a.id < 9999999 AND a.id > 0) LIMIT 25'); $pager = new sfDoctrinePager('Author', $numPerPage); $pager->setQuery(Doctrine_Query::create()->from('Author a')->where('a.id < 9999999')); $pager->setPage(1); $pager->init(); $t->is($pager->getQuery()->getSqlQuery(), 'SELECT a.id AS a__id, a.name AS a__name, a.type AS a__type FROM author a WHERE (a.id < 9999999) LIMIT 25');
/** * Get all the results for the pager instance * * @param mixed $hydrationMode A hydration mode identifier * * @return Doctrine_Collection|array */ public function getResultsWithoutCache($hydrationMode = null) { return parent::getResults($hydrationMode)->getData(); }
$t->diag('->getResults()'); $query = Doctrine_Core::getTable('Article')->createQuery(); $query->setHydrationMode(Doctrine_Core::HYDRATE_NONE); $pager = new sfDoctrinePager('Article', 10); $pager->setQuery($query); $pager->init(); $t->isa_ok($pager->getResults(), 'array', '->getResults() uses the hydration mode set on the query'); // ->getNbResults() $t->diag('->getNbResults()'); $pager = new sfDoctrinePager('Article', 10); $pager->init(); $count = Doctrine_Core::getTable('Article')->createQuery()->count(); $t->is($pager->getNbResults(), $count, '->getNbResults() returns the number of results'); // Countable interface $t->diag('Countable interface'); $pager = new sfDoctrinePager('Article', 10); $pager->init(); $t->is(count($pager), count($pager->getResults()), '"Countable" interface returns the number of objects in the current pager'); // Iterator interface $t->diag('Iterator interface'); $pager = new sfDoctrinePager('Article', 10); $pager->init(); $normal = 0; $iterated = 0; foreach ($pager->getResults() as $object) { $normal++; } foreach ($pager as $object) { $iterated++; } $t->is($iterated, $normal, '"Iterator" interface loops over objects in the current pager');
$pager->setTableMethod('testTableMethod'); $pager->setPage(1); $pager->init(); $t->is($pager->getQuery()->getSql(), 'SELECT a.id AS a__id, a.name AS a__name FROM author a WHERE a.id > 0 LIMIT 25'); $pager->setPage(2); $pager->init(); $t->is($pager->getQuery()->getSql(), 'SELECT a.id AS a__id, a.name AS a__name FROM author a WHERE a.id > 0 LIMIT 25 OFFSET 25'); $results = $pager->getResults(); $t->is(gettype($results), 'object'); $t->is(get_class($results), 'Doctrine_Collection'); $t->is(count($results), $numPerPage); $t->is($pager->getQuery()->count(), $total); $t->is($pager->getCountQuery()->count(), $total); $pager = new sfDoctrinePager('Author', $numPerPage); $pager->setTableMethod('testTableMethod'); $pager->setPage(1); $pager->init(); $results = $pager->getResults('array'); $t->is(gettype($results), 'array'); $t->is(count($results), $numPerPage); $pager = new sfDoctrinePager('Author', $numPerPage); $pager->setTableMethod('testTableMethod2'); $pager->setQuery(Doctrine_Query::create()->from('Author a')->where('a.id < 9999999')); $pager->setPage(1); $pager->init(); $t->is($pager->getQuery()->getSql(), 'SELECT a.id AS a__id, a.name AS a__name FROM author a WHERE a.id < 9999999 AND a.id > 0 LIMIT 25'); $pager = new sfDoctrinePager('Author', $numPerPage); $pager->setQuery(Doctrine_Query::create()->from('Author a')->where('a.id < 9999999')); $pager->setPage(1); $pager->init(); $t->is($pager->getQuery()->getSql(), 'SELECT a.id AS a__id, a.name AS a__name FROM author a WHERE a.id < 9999999 LIMIT 25');