Example #1
0
 /**
  * @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->addSelect($this->fieldHelper->getVoteFields());
     $query->from('s_articles_vote', 'vote')->where('vote.articleID IN (:ids)')->andWhere('vote.active = 1')->orderBy('vote.articleID', 'DESC')->addOrderBy('vote.datum', 'DESC')->setParameter(':ids', $ids, Connection::PARAM_INT_ARRAY);
     /**@var $statement \Doctrine\DBAL\Driver\ResultStatement */
     $statement = $query->execute();
     $data = $statement->fetchAll(\PDO::FETCH_ASSOC);
     $votes = [];
     foreach ($data as $row) {
         $id = $row['__vote_articleID'];
         $votes[$id][] = $this->voteHydrator->hydrate($row);
     }
     $result = [];
     foreach ($products as $product) {
         $id = $product->getId();
         if (!isset($votes[$id])) {
             continue;
         }
         $number = $product->getNumber();
         $result[$number] = $votes[$id];
     }
     return $result;
 }
 /**
  * @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(['articleID', 'COUNT(id) as total', 'points']);
     $query->from('s_articles_vote', 'vote')->where('vote.articleID IN (:products)')->andWhere('vote.active = 1')->groupBy('vote.articleID')->addGroupBy('vote.points')->orderBy('vote.articleID', 'ASC')->setParameter(':products', $ids, Connection::PARAM_INT_ARRAY);
     /**@var $statement \Doctrine\DBAL\Driver\ResultStatement */
     $statement = $query->execute();
     $data = $statement->fetchAll(\PDO::FETCH_GROUP);
     $result = [];
     foreach ($products as $product) {
         if (!isset($data[$product->getId()])) {
             continue;
         }
         $key = $product->getNumber();
         $votes = $data[$product->getId()];
         $result[$key] = $this->voteHydrator->hydrateAverage($votes);
     }
     return $result;
 }