Doctrine\DBAL\Platforms\SQLServerPlatform::scrubInnerOrderBy PHP Метод

scrubInnerOrderBy() приватный Метод

Caveat: will leave ORDER BY in TOP N subqueries.
private scrubInnerOrderBy ( $query ) : string
$query
Результат string
    private function scrubInnerOrderBy($query)
    {
        $count = substr_count(strtoupper($query), "ORDER BY");
        $offset = 0;
        while ($count-- > 0) {
            $qLen = strlen($query);
            $orderByPos = stripos($query, " ORDER BY", $offset);
            $parenCount = 0;
            $currentPosition = $orderByPos;
            while ($parenCount >= 0 && $currentPosition < $qLen) {
                if ($query[$currentPosition] === '(') {
                    $parenCount++;
                } elseif ($query[$currentPosition] === ')') {
                    $parenCount--;
                }
                $currentPosition++;
            }
            if ($this->isOrderByInTopNSubquery($query, $orderByPos)) {
                // If the order by clause is in a TOP N subquery, do not remove
                // it and continue iteration from the current position.
                $offset = $currentPosition;
                continue;
            }
            if ($currentPosition < $qLen - 1) {
                $query = substr($query, 0, $orderByPos) . substr($query, $currentPosition - 1);
                $offset = $orderByPos;
            }
        }
        return $query;
    }
SQLServerPlatform