queryBuilder->getFragment(Query\Offset::class) ) { if ( null === $limit = $this->queryBuilder->getFragment(Query\Limit::class) ) { throw new \Exception("Your offset query fragment is missing a LIMIT value."); } # an order by is mandatory for mssql offset/limit if ( null === $order = $this->queryBuilder->getFragment(Query\OrderBy::class) ) { $this->orderBy("(SELECT 0)"); } $mssqlOffset = new \Ulmus\Query\MsSQL\Offset(); $mssqlOffset->set($offset->offset, $limit->limit); $this->queryBuilder->removeFragment($offset); $this->queryBuilder->removeFragment($limit); $this->queryBuilder->push($mssqlOffset); } elseif ( null !== $limit = $this->queryBuilder->getFragment(Query\Limit::class) ) { if ( null !== $select = $this->queryBuilder->getFragment(Query\Select::class) ) { $select->top = $limit->limit; } elseif ( null !== $delete = $this->queryBuilder->getFragment(Query\Delete::class) ) { $delete->top = $limit->limit; } $this->queryBuilder->removeFragment($limit); } } */ protected function finalizeQuery() : void { if ( null !== $offset = $this->queryBuilder->getFragment(Query\Offset::class) ) { # an order by is mandatory for mssql offset/limit if ( null === $order = $this->queryBuilder->getFragment(Query\OrderBy::class) ) { $this->orderBy("(SELECT 0)"); } if ( empty ($offset->offset ) ) { if ( null !== $select = $this->queryBuilder->getFragment(Query\Select::class) ) { $select->top = $offset->limit; } elseif ( null !== $delete = $this->queryBuilder->getFragment(Query\Delete::class) ) { $delete->top = $offset->limit; } $this->queryBuilder->removeFragment($offset); } elseif ( empty($offset->limit) ) { throw new \Exception("Your offset query fragment is missing a LIMIT value."); } } if ( null !== $limit = $this->queryBuilder->getFragment(Query\Limit::class) ) { $this->queryBuilder->removeFragment($limit); } } protected function serverRequestCountRepository() : Repository { return new static($this->entityClass, $this->alias, $this->adapter); } }