123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\DB\Sql;
- /**
- * Class LimitExpression
- */
- class LimitExpression extends Expression
- {
- /**
- * @var string
- */
- protected $sql;
- /**
- * @var int
- */
- protected $count;
- /**
- * @var int
- */
- protected $offset;
- /**
- * @param string $sql
- * @param int $count
- * @param int $offset
- */
- public function __construct(
- $sql,
- $count,
- $offset = 0
- ) {
- $this->sql = $sql;
- $this->count = $count;
- $this->offset = $offset;
- }
- /**
- * @inheritdoc
- */
- public function __toString()
- {
- $sql = $this->sql;
- $count = (int)$this->count;
- if ($count <= 0) {
- /** @see Zend_Db_Adapter_Exception */
- #require_once 'Zend/Db/Adapter/Exception.php';
- throw new \Zend_Db_Adapter_Exception("LIMIT argument count=$count is not valid");
- }
- $offset = (int)$this->offset;
- if ($offset < 0) {
- /** @see Zend_Db_Adapter_Exception */
- #require_once 'Zend/Db/Adapter/Exception.php';
- throw new \Zend_Db_Adapter_Exception("LIMIT argument offset=$offset is not valid");
- }
- $sql .= " LIMIT $count";
- if ($offset > 0) {
- $sql .= " OFFSET $offset";
- }
- return trim($sql);
- }
- }
|