LimitRenderer.php 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\DB\Select;
  7. use Magento\Framework\DB\Select;
  8. use Magento\Framework\DB\Sql\LimitExpression;
  9. /**
  10. * Class LimitRenderer
  11. */
  12. class LimitRenderer implements RendererInterface
  13. {
  14. /**
  15. * Render LIMIT section
  16. *
  17. * @param Select $select
  18. * @param string $sql
  19. * @return LimitExpression|string
  20. */
  21. public function render(Select $select, $sql = '')
  22. {
  23. $count = 0;
  24. $offset = 0;
  25. if (!empty($select->getPart(Select::LIMIT_OFFSET))) {
  26. $offset = (int) $select->getPart(Select::LIMIT_OFFSET);
  27. $count = PHP_INT_MAX;
  28. }
  29. if (!empty($select->getPart(Select::LIMIT_COUNT))) {
  30. $count = (int) $select->getPart(Select::LIMIT_COUNT);
  31. }
  32. /*
  33. * Add limits clause
  34. */
  35. if ($count > 0) {
  36. $sql = new LimitExpression($sql, $count, $offset);
  37. }
  38. return $sql;
  39. }
  40. }