/** * Creates locales list. * * @param ViewData\ChoicesAwareViewData $filter * * @return array */ private function buildLocalesList($filter) { $search = $this->repository->createSearch(); $localeAgg = new TermsAggregation('locale_agg'); $localeAgg->setField('messages.locale'); $search->addAggregation($localeAgg); $result = $this->repository->execute($search, Result::RESULTS_RAW); $list = []; foreach ($result['aggregations']['agg_locale_agg']['buckets'] as $value) { $list[$value['key']] = true; } ksort($list); $activeLocales = []; if ($filter->getState()->isActive()) { foreach ($filter->getChoices() as $choice) { $activeLocales[$choice->getLabel()] = $choice->isActive(); } $list = array_merge($list, $activeLocales); } return $list; }
/** * Tests cloning documents. */ public function testCloningDocuments() { $manager = $this->repository->getManager(); $document = new ProductDocument(); $document->setId('tuna_id'); $document->title = 'tuna'; $manager->persist($document); $manager->commit(); $document = $this->repository->find('tuna_id'); $clone = clone $document; $this->assertNull($clone->getId(), 'Id should be null\'ed.'); $manager->persist($clone); $manager->commit(); $search = $this->repository->createSearch()->addQuery(new TermQuery('title', 'tuna')); $this->assertCount(2, $this->repository->execute($search), '2 Results should be found.'); }
/** * Returns specific values from objects. * * @param Request $request Http request object. * * @return array */ public function get(Request $request) { $content = $this->parseJsonContent($request); $search = $this->repository->createSearch()->addFilter(new ExistsQuery($content['name'])); if (array_key_exists('properties', $content)) { foreach ($content['properties'] as $property) { $search->setSource($content['name'] . '.' . $property); } } if (array_key_exists('findBy', $content)) { foreach ($content['findBy'] as $field => $value) { $search->addQuery(new TermsQuery($content['name'] . '.' . $field, is_array($value) ? $value : [$value]), 'must'); } } return $this->repository->execute($search, Result::RESULTS_ARRAY); }
/** * {@inheritdoc} */ public function readAll(Repository $repository, array $parameters = []) { $search = $repository->createSearch(); $search->addQuery(new MatchAllQuery()); if (isset($parameters['size'])) { $search->setSize($parameters['size']); } if (isset($parameters['from'])) { $search->setFrom($parameters['from']); } $results = $repository->execute($search, Result::RESULTS_ARRAY); if (!isset($results[0])) { return null; } return $results; }
/** * Returns scan results iterator. * * @param Repository $repository * @param int $chunkSize * * @return RawIterator */ protected function getResults(Repository $repository, $chunkSize) { $search = $repository->createSearch(); $search->setScroll()->setSize($chunkSize); $search->addQuery(new MatchAllQuery()); $search->setFields(['_parent']); $search->setSource(true); return $repository->execute($search, Repository::RESULTS_RAW_ITERATOR); }