/**
  * 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;
 }
예제 #2
0
 /**
  * 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.');
 }
예제 #3
0
파일: Crud.php 프로젝트: saimaz/ApiBundle
 /**
  * {@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 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);
 }
 /**
  * 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);
 }