/** * @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); } }