コード例 #1
0
 /**
  * @param QueryBuilder $queryBuilder
  * @param null $orderColumnDefinitions
  * @throws \Exception
  */
 protected function applySorting(QueryBuilder $queryBuilder, $orderColumnDefinitions = null)
 {
     if ($orderColumnDefinitions) {
         foreach ($orderColumnDefinitions as $orderColumnDef) {
             $orderColumn = $this->columns->getByIndex($orderColumnDef['column']);
             if ($orderColumn instanceof ListingColumnTypeInterface && $orderColumn->isSortable()) {
                 $options = $orderColumn->getOptions();
                 if (isset($options['order_by'])) {
                     $orderProperty = $options['order_by'];
                 } else {
                     $orderProperty = $this->getRootAliasFieldName($queryBuilder, $orderColumn->getName());
                 }
                 $orderDirection = $orderColumnDef['dir'] == 'desc' ? 'DESC' : 'ASC';
                 $queryBuilder->addOrderBy($orderProperty, $orderDirection);
             }
         }
     } elseif (isset($this->options['order_by'])) {
         $orderDirection = isset($this->options['order_direction']) ? $this->options['order_direction'] : 'ASC';
         $queryBuilder->orderBy($this->options['order_by'], $orderDirection);
     }
 }
コード例 #2
0
 /**
  * @return array
  */
 public function getColumns()
 {
     return $this->columns->getColumns();
 }