/** * @param QueryBuilder $query * @param ProductAttributeFacet $facet * @param Criteria $criteria * @return null|BooleanFacetResult */ private function createBooleanFacetResult(QueryBuilder $query, ProductAttributeFacet $facet, Criteria $criteria) { $sqlField = 'productAttribute.' . $facet->getField(); $query->select('COUNT(' . $sqlField . ')'); /**@var $statement \Doctrine\DBAL\Driver\ResultStatement */ $statement = $query->execute(); $result = $statement->fetch(\PDO::FETCH_COLUMN); if (empty($result)) { return null; } return new BooleanFacetResult($facet->getName(), $facet->getFormFieldName(), $criteria->hasCondition($facet->getName()), $facet->getLabel()); }
/** * @param QueryBuilder $query */ private function rebuildQuery(QueryBuilder $query) { $query->resetQueryPart('orderBy'); $query->resetQueryPart('groupBy'); $query->innerJoin('product', 's_filter_articles', 'productProperty', 'productProperty.articleID = product.id'); $query->groupBy('productProperty.valueID'); $query->select('productProperty.valueID as id'); }