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); } } }