Pagination.php 877 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace App\Service;
  3. use Doctrine\ORM\QueryBuilder;
  4. use Doctrine\ORM\Tools\Pagination\Paginator;
  5. class Pagination
  6. {
  7. protected readonly Paginator $paginator;
  8. public function __construct(
  9. protected readonly QueryBuilder $queryBuilder,
  10. protected readonly int $limit,
  11. protected readonly int $currentPage
  12. )
  13. {
  14. $this->paginator = new Paginator($this->queryBuilder);
  15. }
  16. public function getPaginator(): Paginator
  17. {
  18. return $this->paginator;
  19. }
  20. public function getTotal(): int
  21. {
  22. return $this->paginator->count();
  23. }
  24. public function getPages(): int
  25. {
  26. $pages = ceil($this->paginator->count() / $this->limit);
  27. $pages = $pages > 0 ? $pages: 1;
  28. return $pages;
  29. }
  30. public function getCurrentPage(): int
  31. {
  32. return $this->currentPage;
  33. }
  34. }