/**
  * @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());
 }
예제 #2
0
 /**
  * @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;
 }