/** * @inheritdoc */ public function getList(array $ids, Struct\ShopContextInterface $context) { $query = $this->connection->createQueryBuilder(); $query->addSelect($this->fieldHelper->getManufacturerFields()); $query->from('s_articles_supplier', 'manufacturer')->leftJoin('manufacturer', 's_articles_supplier_attributes', 'manufacturerAttribute', 'manufacturerAttribute.supplierID = manufacturer.id'); $query->where('manufacturer.id IN (:ids)')->setParameter(':ids', $ids, Connection::PARAM_INT_ARRAY); $this->fieldHelper->addManufacturerTranslation($query, $context); /**@var $statement \Doctrine\DBAL\Driver\ResultStatement */ $statement = $query->execute(); $data = $statement->fetchAll(\PDO::FETCH_ASSOC); $manufacturers = []; foreach ($data as $row) { $id = $row['__manufacturer_id']; $manufacturers[$id] = $this->manufacturerHydrator->hydrate($row); } return $manufacturers; }
/** * @param Struct\ListProduct $product * @param array $data * @return Struct\ListProduct */ private function assignData(Struct\ListProduct $product, array $data) { $translation = $this->getProductTranslation($data); $data = array_merge($data, $translation); $this->assignProductData($product, $data); $product->setTax($this->taxHydrator->hydrate($data)); $this->assignPriceGroupData($product, $data); if ($data['__product_supplierID']) { $product->setManufacturer($this->manufacturerHydrator->hydrate($data)); } if ($data['__esd_id']) { $product->setEsd($this->esdHydrator->hydrate($data)); } $product->setUnit($this->unitHydrator->hydrate($data)); if (!empty($data['__productAttribute_id'])) { $this->assignAttributeData($product, $data); } return $product; }