public function testGetDerivedQueries() { $this->matchContainerFactory->expects($this->once())->method('create')->willReturn('asdf'); $result = $this->queryContainer->addMatchQuery($this->select, $this->requestQuery, BoolExpression::QUERY_CONDITION_MUST); $this->assertEquals($this->select, $result); $queries = $this->queryContainer->getMatchQueries(); $this->assertCount(1, $queries); $this->assertEquals('asdf', reset($queries)); }
/** * @param RequestInterface $request * @param QueryContainer $queryContainer * @param ScoreBuilder $scoreBuilder * @param Select $select * @param IndexBuilderInterface $indexBuilder * @return Select * @throws \Zend_Db_Exception */ private function addDerivedQueries(RequestInterface $request, QueryContainer $queryContainer, ScoreBuilder $scoreBuilder, Select $select, IndexBuilderInterface $indexBuilder) { $matchQueries = $queryContainer->getMatchQueries(); if (!$matchQueries) { $select->columns($scoreBuilder->build()); $select = $this->createAroundSelect($select, $scoreBuilder); } else { $matchContainer = array_shift($matchQueries); $this->matchBuilder->build($scoreBuilder, $select, $matchContainer->getRequest(), $matchContainer->getConditionType()); $select->columns($scoreBuilder->build()); $select = $this->createAroundSelect($select, $scoreBuilder); $select = $this->addMatchQueries($request, $select, $indexBuilder, $matchQueries); } return $select; }