/** * @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 * @return array */ private function getProducts(QueryBuilder $query) { /**@var $statement \Doctrine\DBAL\Driver\ResultStatement */ $statement = $query->execute(); $data = $statement->fetchAll(\PDO::FETCH_ASSOC); $products = []; foreach ($data as $row) { $product = new BaseProduct((int) $row['__product_id'], (int) $row['__variant_id'], $row['__variant_ordernumber']); $product->addAttribute('search', $this->attributeHydrator->hydrate($row)); $products[$product->getNumber()] = $product; } return $products; }