Advertisement
TheFan1968

ZendFramework 3: Pagination mit Doctrine und ZF3

Jan 18th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.08 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Kvberlin\Database;
  4.  
  5. use Doctrine\ORM\Query;
  6. use Zend\Debug\Debug;
  7.  
  8. /**
  9.  * ZendFramework3 ResultPaginator
  10.  * Autor: Peter Wendel (ITA),- 897
  11.  * Datum: 19.12.2017
  12.  *
  13.  * Kurzbeschreibung:
  14.  * Eine Klasse für paginierte Ergebnisausgabe
  15.  * @license   http://framework.zend.com/license/new-bsd New BSD License
  16.  * Created by PhpStorm.
  17.  */
  18. class ResultPaginator
  19. {
  20.     /**
  21.      * @var Query
  22.      */
  23.     private $query;
  24.  
  25.     /**
  26.      * @var int
  27.      */
  28.     private $count;
  29.  
  30.     /**
  31.      * @var int
  32.      */
  33.     private $limit = 100;
  34.  
  35.     /**
  36.      * @var int
  37.      */
  38.     private $start = 0;
  39.  
  40.     /**
  41.      * ResultPaginator constructor.
  42.      * @param Query $query
  43.      */
  44.     public function __construct(Query $query)
  45.     {
  46.         $this->query = $query;
  47.         $this->count = count($this->query->getResult());
  48.  
  49.     }
  50.  
  51.     /**
  52.      * Ergebnismenge
  53.      * @return int
  54.      */
  55.     public function getCount(){
  56.         return $this->count;
  57.     }
  58.  
  59.     /**
  60.      * Seitenmenge
  61.      * @return float
  62.      */
  63.     public function  getPageCount(){
  64.         return ceil($this->count / $this->limit);
  65.     }
  66.  
  67.     /**
  68.      * Aktuelle Seite
  69.      * @return float|int
  70.      */
  71.     public function getActualPage(){
  72.         return ceil($this->start / $this->limit) + 1;
  73.     }
  74.  
  75.     /**
  76.      * Das paginierte Result-Set
  77.      * @return array
  78.      */
  79.     public function getResult(){
  80.         return $this->query->getResult();
  81.     }
  82.  
  83.     /**
  84.      * Beginnt ab Datensatz...
  85.      * @param int $start
  86.      */
  87.     public function setStartResult(int $start){
  88.         $this->start = $start;
  89.         $this->query->setFirstResult($start);
  90.     }
  91.  
  92.     /**
  93.      * Datensatzmenge auf der HP pro Seite definieren
  94.      * @param int $limit
  95.      */
  96.     public function setLimit(int $limit=100){
  97.         $this->limit = $limit;
  98.         $this->query->setMaxResults($limit);
  99.     }
  100.  
  101.     /**
  102.      * Rückgabe der Menge von Datensätzen, die pro Seite angezeigt werden sollen.
  103.      * @return int
  104.      */
  105.     public function getLimit(){
  106.         return $this->limit;
  107.     }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement