public function order($order, $desc = null)
    {
        // Case with comma-separated fields or first argument being an array
        if (is_string($order) && strpos($order, ',') !== false) {
            $order = explode(',', $order);
        }

        if (is_array($order)) {
            if ($desc !== null) {
                throw new Exception(
                    'If first argument is array, second argument must not be used'
                );
            }
            foreach (array_reverse($order) as $o) {
                $this->order($o);
            }

            return $this;
        }

        // First argument may contain space, to divide field and ordering keyword.
        // Explode string only if ordering keyword is 'desc' or 'asc'.
        if ($desc === null && is_string($order) && strpos($order, ' ') !== false) {
            $_chunks = explode(' ', $order);
            $_desc = strtolower(array_pop($_chunks));
            if (in_array($_desc, ['desc', 'asc'])) {
                $order = implode(' ', $_chunks);
                $desc = $_desc;
            }
        }

        if (is_bool($desc)) {
            $desc = $desc ? 'desc' : '';
        } elseif (strtolower($desc) === 'asc') {
            $desc = '';
        } else {
            // allows custom order like "order by name desc nulls last" for Oracle
        }

        $this->args['order'][] = [$order, $desc];

        return $this;
    }
public function order($order, $desc = null)
    {
        // Case with comma-separated fields or first argument being an array
        if (is_string($order) && strpos($order, ',') !== false) {
            $order = explode(',', $order);
        }

        if (is_array($order)) {
            if ($desc !== null) {
                throw new Exception(
                    'If first argument is array, second argument must not be used'
                );
            }
            foreach (array_reverse($order) as $o) {
                $this->order($o);
            }

            return $this;
        }

        // First argument may contain space, to divide field and ordering keyword.
        // Explode string only if ordering keyword is 'desc' or 'asc'.
        if ($desc === null && is_string($order) && strpos($order, ' ') !== false) {
            $_chunks = explode(' ', $order);
            $_desc = strtolower(array_pop($_chunks));
            if (in_array($_desc, ['desc', 'asc'])) {
                $order = implode(' ', $_chunks);
                $desc = $_desc;
            }
        }

        if (is_bool($desc)) {
            $desc = $desc ? 'desc' : '';
        } elseif (strtolower($desc) === 'asc') {
            $desc = '';
        } else {
            // allows custom order like "order by name desc nulls last" for Oracle
        }

        $this->args['order'][] = [$order, $desc];

        return $this;
    }
public function order ( $ order , $ desc = null ) { // Case with comma-separated fields or first argument being an array if ( is_string ( $ order ) && strpos ( $ order , ',' ) !== false ) { $ order = explode ( ',' , $ order ) ; } if ( is_array ( $ order ) ) { if ( $ desc !== null ) { throw new Exception ( 'If first argument is array, second argument must not be used' ) ; } foreach ( array_reverse ( $ order ) as $ o ) { $ this -> order ( $ o ) ; } return $ this ; } // First argument may contain space, to divide field and ordering keyword. // Explode string only if ordering keyword is 'desc' or 'asc'. if ( $ desc === null && is_string ( $ order ) && strpos ( $ order , ' ' ) !== false ) { $ _chunks = explode ( ' ' , $ order ) ; $ _desc = strtolower ( array_pop ( $ _chunks ) ) ; if ( in_array ( $ _desc , [ 'desc' , 'asc' ] ) ) { $ order = implode ( ' ' , $ _chunks ) ; $ desc = $ _desc ; } } if ( is_bool ( $ desc ) ) { $ desc = $ desc ? 'desc' : '' ; } elseif ( strtolower ( $ desc ) === 'asc' ) { $ desc = '' ; } else { // allows custom order like "order by name desc nulls last" for Oracle } $ this -> args [ 'order' ] [ ] = [ $ order , $ desc ] ; return $ this ; }
Orders results by field or Expression. See documentation for full
list of possible arguments.

$q->order('name');
$q->order('name desc');
$q->order('name desc, id asc')
$q->order('name',true);

@param string|array $order Order by
@param string|bool  $desc  true to sort descending

@return $this
Orders results by field or Expression . See documentation for full list of possible arguments .