Exemplo n.º 1
0
 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));
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
 public function assembleOrderByClause(OrderByClause $clause)
 {
     $orders = [];
     foreach ($clause->getFields() as $field) {
         $orders[] = trim($this->assembleSegment($field) . ' ' . strtoupper($clause->getOrder($field, '')));
     }
     return $clause->getAction() . ' ' . implode(', ', $orders);
 }