Bolt\Storage\Query\Handler\SearchQueryHandler::__invoke PHP Method

__invoke() public method

public __invoke ( ContentQueryParser $contentQuery ) : SearchQueryResultset
$contentQuery Bolt\Storage\Query\ContentQueryParser
return Bolt\Storage\Query\SearchQueryResultset
    public function __invoke(ContentQueryParser $contentQuery)
    {
        $set = new SearchQueryResultset();
        $cleanSearchQuery = $contentQuery->getService('search');
        /** @var SearchQuery $query */
        $query = clone $cleanSearchQuery;
        foreach ($contentQuery->getContentTypes() as $contentType) {
            $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) {
                    /** @var SearchWeighter $weighter */
                    $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;
        }
    }
SearchQueryHandler