/**
  * {@inheritdoc}
  */
 protected function applySorts(\SelectQueryInterface $query, array $sorts)
 {
     if (empty($sorts)) {
         $query->orderBy('s.name', 'ASC');
     } else {
         foreach ($sorts as $sort => $order) {
             if ($order === CursorInterface::SORT_DESC) {
                 $direction = 'DESC';
             } else {
                 $direction = 'ASC';
             }
             switch ($sort) {
                 case Field::SUBER_NAME:
                     $query->orderBy('s.name', $direction);
                     break;
                 default:
                     throw new \InvalidArgumentException("Unsupported sort field");
             }
         }
     }
 }
 protected function applySorts(\SelectQueryInterface $query, array $sorts)
 {
     if (empty($sorts)) {
         $query->orderBy('s.id', 'ASC');
     } else {
         foreach ($sorts as $sort => $order) {
             if ($order === CursorInterface::SORT_DESC) {
                 $direction = 'DESC';
             } else {
                 $direction = 'ASC';
             }
             switch ($sort) {
                 case Field::SUB_ID:
                     $query->orderBy('s.id', $direction);
                     break;
                 case Field::SUB_STATUS:
                     $query->orderBy('s.status', $direction);
                     break;
                 case Field::SUB_CREATED_TS:
                     if ($value instanceof \DateTime) {
                         $value = $value->format(Misc::SQL_DATETIME);
                     }
                     $query->orderBy('s.created', $direction);
                     break;
                 case Field::CHAN_ID:
                     $query->orderBy('c.name', $direction);
                     break;
                 case Field::SUBER_NAME:
                     $query->orderBy('s.name', $direction);
                     break;
                 default:
                     throw new \InvalidArgumentException("Unsupported sort field");
             }
         }
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function applySorts(\SelectQueryInterface $query, array $sorts)
 {
     if (empty($sorts)) {
         // Messages need a default ordering for fetching. If time for
         // more than one message is the same, ordering by message
         // identifier as second choice will lower unpredictable
         // behavior chances to happen (still possible thought since
         // serial fields don't guarantee order, even thought in real
         // life they do until very high values)
         $query->orderBy('q.created', 'ASC')->orderBy('q.msg_id', 'ASC');
     } else {
         foreach ($sorts as $sort => $order) {
             if ($order === CursorInterface::SORT_DESC) {
                 $direction = 'DESC';
             } else {
                 $direction = 'ASC';
             }
             switch ($sort) {
                 case Field::MSG_ID:
                 case Field::MSG_SENT:
                     $query->orderBy('q.created', $direction)->orderBy('q.msg_id', $direction);
                     break;
                 case Field::MSG_ORIGIN:
                     $query->orderBy('m.origin', $direction);
                     break;
                 case Field::MSG_TYPE:
                     $query->orderBy('m.type', $direction);
                     break;
                 case Field::MSG_READ_TS:
                     $query->orderBy('m.read_at', $direction);
                     break;
                 case Field::MSG_UNREAD:
                     $query->orderBy('q.msg_id', $direction);
                     break;
                 case Field::MSG_LEVEL:
                     $query->orderBy('m.level', $direction);
                     break;
                 case Field::SUB_ID:
                     $query->orderBy('q.sub_id', $direction);
                     break;
                 default:
                     throw new \InvalidArgumentException("Unsupported sort field");
             }
         }
     }
 }
Пример #4
0
 public function orderBy($field, $direction = 'ASC')
 {
     $this->query->orderBy($field, $direction);
     return $this;
 }