/** * {@inheritdoc} */ public function generateSorting(SortingInterface $sorting, QueryBuilder $query, ShopContextInterface $context) { $selection = $this->priceHelper->getSelection($context); $this->priceHelper->joinPrices($query, $context); $query->addSelect('MIN(' . $selection . ') as cheapest_price'); /** @var PriceSorting $sorting */ $query->addOrderBy('cheapest_price', $sorting->getDirection())->addOrderBy('product.id', $sorting->getDirection()); }
/** * {@inheritdoc} */ public function generateSorting(SortingInterface $sorting, QueryBuilder $query, ShopContextInterface $context) { if (!$query->hasState(SalesConditionHandler::STATE_INCLUDES_TOPSELLER_TABLE)) { $query->leftJoin('product', 's_articles_top_seller_ro', 'topSeller', 'topSeller.article_id = product.id'); $query->addState(SalesConditionHandler::STATE_INCLUDES_TOPSELLER_TABLE); } /** @var PopularitySorting $sorting */ $query->addOrderBy('topSeller.sales', $sorting->getDirection())->addOrderBy('topSeller.article_id', $sorting->getDirection()); }
/** * {@inheritdoc} */ public function generateSorting(SortingInterface $sorting, QueryBuilder $query, ShopContextInterface $context) { if (!$query->hasState(SearchTermConditionHandler::STATE_INCLUDES_RANKING)) { return; } /** @var SearchRankingSorting $sorting */ $query->addOrderBy('searchTable.ranking', $sorting->getDirection()); $query->addOrderBy('product.id', $sorting->getDirection()); }
/** * {@inheritdoc} */ public function generateSorting(SortingInterface $sorting, QueryBuilder $query, ShopContextInterface $context) { /** @var ProductAttributeSorting $sorting */ if (!$sorting->getField()) { throw new \Exception('ProductAttributeSorting class requires a defined attribute field!'); } $query->addOrderBy('productAttribute.' . $sorting->getField(), $sorting->getDirection()); }
/** * {@inheritdoc} */ public function generateSorting(SortingInterface $sorting, QueryBuilder $query, ShopContextInterface $context) { /** @var ReleaseDateSorting $sorting */ $query->addOrderBy('product.datum', $sorting->getDirection())->addOrderBy('product.changetime', $sorting->getDirection())->addOrderBy('product.id', $sorting->getDirection()); }
/** * {@inheritdoc} */ public function generateSorting(SortingInterface $sorting, QueryBuilder $query, ShopContextInterface $context) { /** @var ProductNameSorting $sorting */ $query->addOrderBy('product.name', $sorting->getDirection())->addOrderBy('product.id', $sorting->getDirection()); }
/** * {@inheritdoc} */ public function generateSorting(SortingInterface $sorting, QueryBuilder $query, ShopContextInterface $context) { $query->addOrderBy('variant.instock', $sorting->getDirection())->addOrderBy('product.id', 'DESC'); }