/** * @inheritdoc */ public function getList($products, Struct\ShopContextInterface $context) { $ids = []; foreach ($products as $product) { $ids[] = $product->getId(); } $ids = array_unique($ids); $query = $this->connection->createQueryBuilder(); $query->select(['relation.article_id']); $query->addSelect($this->fieldHelper->getRelatedProductStreamFields()); $query->from('s_product_streams_articles', 'relation'); $query->innerJoin('relation', 's_product_streams', 'stream', 'stream.id = relation.stream_id'); $this->fieldHelper->addProductStreamTranslation($query, $context); $query->where('relation.article_id IN (:ids)')->setParameter(':ids', $ids, Connection::PARAM_INT_ARRAY); /**@var $statement \Doctrine\DBAL\Driver\ResultStatement */ $statement = $query->execute(); $data = $statement->fetchAll(\PDO::FETCH_GROUP); $related = []; foreach ($data as $productId => $data) { $related[$productId] = []; foreach ($data as $row) { $related[$productId][] = $this->hydrator->hydrate($row); } } return $related; }