getService() public method

Returns a service for the named operation.
public getService ( string $operation ) : Bolt\Storage\Query\QueryInterface
$operation string
return Bolt\Storage\Query\QueryInterface
Example #1
0
 /**
  * @param ContentQueryParser $contentQuery
  *
  * @return SearchQueryResultset
  */
 public function __invoke(ContentQueryParser $contentQuery)
 {
     $set = new SearchQueryResultset();
     foreach ($contentQuery->getContentTypes() as $contenttype) {
         $query = $contentQuery->getService('search');
         $repo = $contentQuery->getEntityManager()->getRepository($contenttype);
         $query->setQueryBuilder($repo->createQueryBuilder($contenttype));
         $query->setContentType($contenttype);
         $searchParam = $contentQuery->getParameter('filter');
         $query->setParameters($contentQuery->getParameters());
         $query->setSearch($searchParam);
         $contentQuery->runDirectives($query);
         $result = $repo->queryWith($query);
         if ($result) {
             if (count($result) > 0) {
                 $weighter = $contentQuery->getService('search_weighter');
                 $weighter->setContentType($contenttype);
                 $weighter->setResults($result);
                 $weighter->setSearchWords($query->getSearchWords());
                 $scores = $weighter->weight();
                 $set->add($result, $contenttype, $scores);
             } else {
                 $set->add($result, $contenttype);
             }
         }
     }
     if ($query->getSingleFetchMode()) {
         return $set->current();
     } else {
         return $set;
     }
 }
Example #2
0
 /**
  * @param ContentQueryParser $contentQuery
  *
  * @return QueryResultset
  */
 public function __invoke(ContentQueryParser $contentQuery)
 {
     $set = new QueryResultset();
     /** @var SelectQuery $query */
     $query = $contentQuery->getService('select');
     foreach ($contentQuery->getContentTypes() as $contentType) {
         $repo = $contentQuery->getEntityManager()->getRepository($contentType);
         $query->setQueryBuilder($repo->createQueryBuilder($contentType));
         $query->setContentType($contentType);
         /** Run the parameters through the whitelister. If we get a false back from this method it's because there
          * is no need to continue with the query.
          */
         $params = $this->whitelistParameters($contentQuery->getParameters(), $repo);
         if (!$params && count($contentQuery->getParameters())) {
             continue;
         }
         /** Continue and run the query add the results to the set */
         $query->setParameters($params);
         $contentQuery->runDirectives($query);
         $result = $repo->queryWith($query);
         if ($result) {
             $set->add($result, $contentType);
         }
     }
     if ($query->getSingleFetchMode()) {
         return $set->current();
     } else {
         return $set;
     }
 }
Example #3
0
 public function postgresSearch(ContentQueryParser $contentQuery)
 {
     $set = new SearchQueryResultset();
     foreach ($contentQuery->getContentTypes() as $contenttype) {
         $repo = $contentQuery->getEntityManager()->getRepository($contenttype);
         $query = $repo->createQueryBuilder($contenttype);
         $config = $contentQuery->getService('search_config');
         $search = $contentQuery->getParameter('filter');
         $adapter = new PostgresSearch($query, $config, explode(' ', $search));
         $adapter->setContentType($contenttype);
         $result = $repo->findWith($adapter->getQuery());
         $set->add($result, $contenttype);
     }
     return $set;
 }
Example #4
0
 /**
  * @param ContentQueryParser $contentQuery
  *
  * @return QueryResultset
  */
 public function __invoke(ContentQueryParser $contentQuery)
 {
     $set = new QueryResultset();
     foreach ($contentQuery->getContentTypes() as $contenttype) {
         $query = $contentQuery->getService('select');
         $repo = $contentQuery->getEntityManager()->getRepository($contenttype);
         $query->setQueryBuilder($repo->createQueryBuilder($contenttype));
         $query->setContentType($contenttype);
         $query->setParameters($contentQuery->getParameters());
         $contentQuery->runDirectives($query);
         $result = $repo->queryWith($query);
         if ($result) {
             $set->add($result, $contenttype);
         }
     }
     if ($query->getSingleFetchMode()) {
         return $set->current();
     } else {
         return $set;
     }
 }