/** * {@inheritdoc} */ public function generateCondition(ConditionInterface $condition, QueryBuilder $query, ShopContextInterface $context) { $selection = $this->priceHelper->getSelection($context); $selection = 'MIN(' . $selection . ')'; $this->priceHelper->joinPrices($query, $context); /** @var PriceCondition $condition */ if ($condition->getMaxPrice() > 0 && $condition->getMinPrice() > 0) { $query->andHaving($selection . ' BETWEEN :priceMin AND :priceMax'); $query->setParameter(':priceMin', $condition->getMinPrice()); $query->setParameter(':priceMax', $condition->getMaxPrice()); } elseif ($condition->getMaxPrice() > 0) { $query->andHaving($selection . ' <= :priceMax'); $query->setParameter(':priceMax', $condition->getMaxPrice()); } elseif ($condition->getMinPrice() > 0) { $query->andHaving($selection . ' >= :priceMin'); $query->setParameter(':priceMin', $condition->getMinPrice()); } return; }