/** * {@inheritdoc} */ public function getItems(BucketInterface $bucket, array $dimensions, EntityStorage $entityStorage) { $data = []; $range = $this->dataProvider->getRange(); if (!$range && $entityStorage->getSource()) { $range = $this->getRange($bucket, $dimensions, $entityStorage); $dbRanges = $this->dataProvider->getAggregation($bucket, $dimensions, $range, $entityStorage); $data = $this->dataProvider->prepareData($range, $dbRanges); } return $data; }
/** * {@inheritdoc} */ public function getAggregation(BucketInterface $bucket, array $dimensions, $range, \Magento\Framework\Search\Dynamic\EntityStorage $entityStorage) { $select = $this->dataProvider->getDataSet($bucket, $dimensions, $entityStorage->getSource()); $column = $select->getPart(Select::COLUMNS)[0]; $select->reset(Select::COLUMNS); $rangeExpr = new \Zend_Db_Expr($this->connection->quoteInto('(FLOOR(' . $column[1] . ' / ? ) + 1)', $range)); $select->columns(['range' => $rangeExpr])->columns(['metrix' => 'COUNT(*)'])->group('range')->order('range'); $result = $this->connection->fetchPairs($select); return $result; }