public function orderBy($fields) { /** * @var $this IStatement */ $orderClause = new OrderByClause(); if (is_array($fields)) { foreach ($fields as $field => $order) { if (Strings::containsAny($order, ['asc', 'desc'], false)) { $orderClause->addField($field, $order); } else { $orderClause->addField($order); } } } else { if (func_num_args() > 1) { foreach (func_get_args() as $field) { $orderClause->addField($field); } } else { $orderClause->addField($fields); } } $this->addClause($orderClause); return $this; }
public function testAssemble() { $clause = new OrderByClause(); $clause->addField((new FieldExpression())->setField('first')); $this->assertEquals('ORDER BY first', QueryAssembler::stringify($clause)); $clause->clearFields(); $clause->addField((new FieldExpression())->setField('first'), 'ASC'); $this->assertEquals('ORDER BY first ASC', QueryAssembler::stringify($clause)); $clause->clearFields(); $clause->addField((new FieldExpression())->setField('first'), 'DESC'); $this->assertEquals('ORDER BY first DESC', QueryAssembler::stringify($clause)); $clause->addField((new FieldExpression())->setField('second'), 'ASC'); $this->assertEquals('ORDER BY first DESC, second ASC', QueryAssembler::stringify($clause)); $clause->addField('third', 'DESC'); $this->assertEquals('ORDER BY first DESC, second ASC, third DESC', QueryAssembler::stringify($clause)); $clause->addField(CustomSelectExpression::create('DATE(`test`)')); $this->assertEquals('ORDER BY first DESC, second ASC, third DESC, DATE(`test`)', QueryAssembler::stringify($clause)); }