Doctrine\Search\Query::getResult PHP Method

getResult() public method

Execute search and hydrate results if required.
public getResult ( integer $hydrationMode = null ) : mixed
$hydrationMode integer
return mixed
    public function getResult($hydrationMode = null)
    {
        if ($hydrationMode) {
            $this->hydrationMode = $hydrationMode;
        }
        $classes = array();
        foreach (array_unique($this->entityClasses) as $entityClass) {
            $classes[] = $this->sm->getClassMetadata($entityClass);
        }
        $resultSet = $this->getSearchManager()->getClient()->search($this->query, $classes);
        // TODO: abstraction of support for different result sets
        if ($resultSet instanceof Elastica\ResultSet) {
            $this->count = $resultSet->getTotalHits();
            $this->facets = $resultSet->getFacets();
            $results = $resultSet->getResults();
        } else {
            $resultClass = get_class($resultSet);
            throw new DoctrineSearchException("Unexpected result set class '{$resultClass}'");
        }
        // Return results depending on hydration mode
        if ($this->hydrationMode == self::HYDRATE_BYPASS) {
            return $resultSet;
        } elseif ($this->hydrationMode == self::HYDRATE_INTERNAL) {
            return $this->sm->getUnitOfWork()->hydrateCollection($classes, $resultSet);
        }
        // Document ids are used to lookup dbms results
        $fn = function ($result) {
            return (string) $result->getId();
        };
        $ids = array_map($fn, $results);
        return $this->getHydrationQuery()->setParameter($this->hydrationParameter, $ids ?: null)->useResultCache($this->useResultCache, $this->cacheLifetime)->getResult($this->hydrationMode);
    }

Usage Example

コード例 #1
0
ファイル: PagerfantaAdapter.php プロジェクト: akleiber/search
 public function getSlice($iOffset, $iLength)
 {
     $this->query->setFrom($iOffset);
     $this->query->setLimit($iLength);
     return $this->query->getResult();
 }