public function testConditionOverwrite() { $criteria = new Criteria(); $criteria->addCondition(new CategoryCondition(array(1))); $condition = new CategoryCondition(array(3)); $criteria->addCondition($condition); $this->assertCount(1, $criteria->getConditions()); $condition = $criteria->getCondition($condition->getName()); $this->assertInstanceOf('Shopware\\Bundle\\SearchBundle\\Condition\\CategoryCondition', $condition); $this->assertEquals(array(3), $condition->getCategoryIds()); }
/** * @param Criteria $criteria * @param QueryBuilder $query * @param ShopContextInterface $context */ private function addConditions(Criteria $criteria, QueryBuilder $query, ShopContextInterface $context) { foreach ($criteria->getConditions() as $condition) { $handler = $this->getConditionHandler($condition); $handler->generateCondition($condition, $query, $context); } }
/** * @param Criteria $criteria * @return array */ private function getFilteredValues(Criteria $criteria) { $values = []; foreach ($criteria->getConditions() as $condition) { if ($condition instanceof PropertyCondition) { $values = array_merge($values, $condition->getValueIds()); } } return $values; }