/**
  * @param array $data
  * @return Struct\Category
  */
 public function hydrate(array $data)
 {
     $category = new Struct\Category();
     $this->assignCategoryData($category, $data);
     if ($data['__media_id']) {
         $category->setMedia($this->mediaHydrator->hydrate($data));
     }
     if ($data['__categoryAttribute_id']) {
         $attribute = $this->extractFields('__categoryAttribute_', $data);
         $category->addAttribute('core', $this->attributeHydrator->hydrate($attribute));
     }
     return $category;
 }
Beispiel #2
0
 /**
  * @inheritdoc
  */
 public function getList($ids, Struct\ShopContextInterface $context)
 {
     $query = $this->getQuery();
     $query->setParameter(':ids', $ids, Connection::PARAM_INT_ARRAY);
     /**@var $statement \Doctrine\DBAL\Driver\ResultStatement */
     $statement = $query->execute();
     $data = $statement->fetchAll(\PDO::FETCH_ASSOC);
     $result = [];
     foreach ($data as $row) {
         $mediaId = $row['__media_id'];
         $result[$mediaId] = $this->hydrator->hydrate($row);
     }
     return $result;
 }
Beispiel #3
0
 /**
  * @param array $data
  * @return Struct\Property\Option
  */
 public function hydrateOption(array $data)
 {
     $option = new Struct\Property\Option();
     $translation = $this->getTranslation($data, '__propertyOption_translation', '__propertyOption_translation_fallback', ['optionValue' => '__propertyOption_value']);
     $data = array_merge($data, $translation);
     $option->setId((int) $data['__propertyOption_id']);
     $option->setName($data['__propertyOption_value']);
     $option->setPosition((int) $data['__propertyOption_position']);
     if (isset($data['__media_id']) && $data['__media_id']) {
         $option->setMedia($this->mediaHydrator->hydrate($data));
     }
     return $option;
 }
 /**
  * @inheritdoc
  */
 public function getCovers($products, Struct\ShopContextInterface $context)
 {
     $ids = [];
     foreach ($products as $product) {
         $ids[] = $product->getId();
     }
     $ids = array_unique($ids);
     $query = $this->getQuery($context);
     $query->where('image.main = 1')->andWhere('image.articleID IN (:products)')->setParameter(':products', $ids, Connection::PARAM_INT_ARRAY);
     /**@var $statement \Doctrine\DBAL\Driver\ResultStatement */
     $statement = $query->execute();
     $data = $statement->fetchAll(\PDO::FETCH_ASSOC);
     $covers = [];
     foreach ($data as $row) {
         $id = $row['__image_articleID'];
         $covers[$id] = $this->hydrator->hydrateProductImage($row);
     }
     return $this->assignProductMedia($covers, $products);
 }
 /**
  * @inheritdoc
  */
 public function getCovers($products, Struct\ShopContextInterface $context)
 {
     $ids = [];
     foreach ($products as $product) {
         $ids[] = $product->getVariantId();
     }
     $ids = array_unique($ids);
     $query = $this->getQuery($context);
     $query->andWhere('childImage.article_detail_id IN (:products)')->setParameter(':products', $ids, Connection::PARAM_INT_ARRAY);
     $query->orderBy('image.main')->addOrderBy('image.position');
     /**@var $statement \Doctrine\DBAL\Driver\ResultStatement */
     $statement = $query->execute();
     $data = $statement->fetchAll(\PDO::FETCH_GROUP);
     $result = [];
     foreach ($data as $number => $row) {
         $cover = array_shift($row);
         $result[$number] = $this->hydrator->hydrateProductImage($cover);
     }
     return $result;
 }