/** * @return $this */ public function setupQueryResultSet() { $results = []; foreach ($this->getSectionList() as $section) { $setupAggs = $section == $this->getSection() ? true : false; $nativeQuery = $this->nativeQueryGenerator->generateNativeQuery($section, $setupAggs); if ($nativeQuery === false) { continue; } /** @var \Elastica\ResultSet $resultData */ $resultData = $this->container->get('fos_elastica.index.search.' . $section)->search($nativeQuery); if ($resultData->getTotalHits() < 1) { continue; } $this->setTotalHit($this->getTotalHit() + $resultData->getTotalHits()); if ($section !== $this->getSection()) { $results[$section]['total_item'] = $resultData->getTotalHits(); $results[$section]['type'] = $this->translator->trans($section); continue; } $this->setCurrectSectionHit($resultData->getTotalHits()); /** * @var Result $object */ foreach ($resultData as $resultObject) { $objectDetail = $this->getObjectDetail($resultObject); $results[$section]['total_item'] = $resultData->getTotalHits(); $results[$section]['type'] = $this->translator->trans($section); $result['detail'] = $objectDetail; $result['source'] = $resultObject->getSource(); $results[$section]['data'][] = $result; } $resultAggs = $resultData->getAggregations(); foreach ($resultAggs as $aggKey => $agg) { if (count($agg['buckets']) < 1) { unset($resultAggs[$aggKey]); } } $this->setAggs($resultAggs); } $this->setResultSet($results); return $this; }