chore: moves common code to Base namespace
This commit is contained in:
72
src/Base/Util/Paginator.php
Normal file
72
src/Base/Util/Paginator.php
Normal file
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
namespace App\Base\Util;
|
||||
|
||||
use Doctrine\ORM\Query;
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
use Doctrine\ORM\Tools\Pagination\Paginator as OrmPaginator;
|
||||
|
||||
class Paginator
|
||||
{
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
private $total;
|
||||
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
private $lastPage;
|
||||
|
||||
private $items;
|
||||
|
||||
public $currentPage = 1;
|
||||
|
||||
public $limit = 5;
|
||||
|
||||
/**
|
||||
* @param QueryBuilder|Query $query
|
||||
* @param int $page
|
||||
* @param int $limit
|
||||
* @return Paginator
|
||||
*/
|
||||
public function paginate($query, int $page = 1, int $limit = 5): Paginator
|
||||
{
|
||||
$paginator = new OrmPaginator($query);
|
||||
|
||||
$paginator
|
||||
->getQuery()
|
||||
->setFirstResult($limit * ($page - 1))
|
||||
->setMaxResults($limit);
|
||||
|
||||
$this->total = $paginator->count();
|
||||
$this->lastPage = (int) ceil($paginator->count() / $paginator->getQuery()->getMaxResults());
|
||||
$this->items = $paginator;
|
||||
$this->currentPage = $page;
|
||||
$this->limit = $limit;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getTotal(): int
|
||||
{
|
||||
return $this->total;
|
||||
}
|
||||
|
||||
public function getLastPage(): int
|
||||
{
|
||||
return $this->lastPage;
|
||||
}
|
||||
|
||||
public function getItems()
|
||||
{
|
||||
return $this->items;
|
||||
}
|
||||
|
||||
public function getShowing()
|
||||
{
|
||||
$showingStart = ($this->currentPage - 1) * $this->limit;
|
||||
$showingEnd = $showingStart + $this->limit;
|
||||
return sprintf("Showing %d - %d of %d results.", $showingStart, $showingEnd, $this->total);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user