ordering = $ordering; } /** * @param QueryBuilder $query * @param array $mappings * @return $this */ public function apply2Query(QueryBuilder $query, array $mappings) { foreach ($this->ordering as $order) { if ($order instanceof OrderElement) { if (isset($mappings[$order->getField()])) { $mapping = $mappings[$order->getField()]; $orders[$mapping] = $order->getDirection(); $query->addOrderBy($mapping, $order->getDirection()); } } } return $this; } /** * @param Criteria $criteria * @param array $mappings * @return $this */ public function apply2Criteria(Criteria $criteria, array $mappings) { $orders = []; foreach ($this->ordering as $order) { if ($order instanceof OrderElement) { if (isset($mappings[$order->getField()])) { $mapping = $mappings[$order->getField()]; $orders[$mapping] = $order->getDirection(); } } } if(count($orders) > 0) $criteria->orderBy($orders); return $this; } /** * @param array $mappings * @return string */ public function toRawSQL(array $mappings) { $sql = ' ORDER BY '; foreach ($this->ordering as $order) { if ($order instanceof OrderElement) { if (isset($mappings[$order->getField()])) { $mapping = $mappings[$order->getField()]; $sql .= sprintf('%s %s, ', $mapping, $order->getDirection()); } } } return substr($sql, 0 , strlen($sql) - 2); } }