/** * @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; }
/** * @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; }
/** * @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; }