Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Kvberlin\Database;
- use Doctrine\ORM\Query;
- use Zend\Debug\Debug;
- /**
- * ZendFramework3 ResultPaginator
- * Autor: Peter Wendel (ITA),- 897
- * Datum: 19.12.2017
- *
- * Kurzbeschreibung:
- * Eine Klasse für paginierte Ergebnisausgabe
- * @license http://framework.zend.com/license/new-bsd New BSD License
- * Created by PhpStorm.
- */
- class ResultPaginator
- {
- /**
- * @var Query
- */
- private $query;
- /**
- * @var int
- */
- private $count;
- /**
- * @var int
- */
- private $limit = 100;
- /**
- * @var int
- */
- private $start = 0;
- /**
- * ResultPaginator constructor.
- * @param Query $query
- */
- public function __construct(Query $query)
- {
- $this->query = $query;
- $this->count = count($this->query->getResult());
- }
- /**
- * Ergebnismenge
- * @return int
- */
- public function getCount(){
- return $this->count;
- }
- /**
- * Seitenmenge
- * @return float
- */
- public function getPageCount(){
- return ceil($this->count / $this->limit);
- }
- /**
- * Aktuelle Seite
- * @return float|int
- */
- public function getActualPage(){
- return ceil($this->start / $this->limit) + 1;
- }
- /**
- * Das paginierte Result-Set
- * @return array
- */
- public function getResult(){
- return $this->query->getResult();
- }
- /**
- * Beginnt ab Datensatz...
- * @param int $start
- */
- public function setStartResult(int $start){
- $this->start = $start;
- $this->query->setFirstResult($start);
- }
- /**
- * Datensatzmenge auf der HP pro Seite definieren
- * @param int $limit
- */
- public function setLimit(int $limit=100){
- $this->limit = $limit;
- $this->query->setMaxResults($limit);
- }
- /**
- * Rückgabe der Menge von Datensätzen, die pro Seite angezeigt werden sollen.
- * @return int
- */
- public function getLimit(){
- return $this->limit;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement