/** * @param Doctrine\ORM\AbstractQuery $query */ public function __construct(AbstractQuery $query) { $this->result = $query->setMaxResults($query->getMaxResults() + 1)->getResult(); $this->prevPageOffset = $query->getFirstResult() ? max(0, $query->getFirstResult() - $query->getMaxResults() + 1) : null; $this->nextPageOffset = count($this->result) === $query->getMaxResults() ? $query->getMaxResults() + $query->getFirstResult() - 1 : null; $this->currentPageOffset = $query->getFirstResult(); if ($this->nextPageOffset) { array_pop($this->result); } }
public function modifyQuery(AbstractQuery $query) { if ($this->offset > 0) { $query->setFirstResult($this->offset); } if ($this->limit > 0) { $query->setMaxResults($this->limit); } // Propagate to child specification $this->child->modifyQuery($query); }