_conditions as $k => $direction) { if ($direction instanceof ExpressionInterface) { $direction = $direction->sql($generator); } $order[] = is_numeric($k) ? $direction : sprintf('%s %s', $k, $direction); } return sprintf('ORDER BY %s', implode(', ', $order)); } /** * Auxiliary function used for decomposing a nested array of conditions and * building a tree structure inside this object to represent the full SQL expression. * * New order by expressions are merged to existing ones * * @param array $orders list of order by expressions * @param array $types list of types associated on fields referenced in $conditions * @return void */ protected function _addConditions(array $orders, array $types) { foreach ($orders as $key => $val) { if (is_string($key) && is_string($val) && !in_array(strtoupper($val), ['ASC', 'DESC'], true)) { deprecationWarning( 'Passing extra sort expressions by associative array is deprecated. ' . 'Use QueryExpression or numeric array instead.' ); } } $this->_conditions = array_merge($this->_conditions, $orders); } }