/** * Add a facetquery * * Supports a facetquery instance or a config array, in that case a new * facetquery instance wil be created based on the options. * * @param Solarium_Query_Select_Component_Facet_Query|array $facetQuery * @return Solarium_Query_Select_Component_Facet_MultiQuery Provides fluent interface */ public function addQuery($facetQuery) { if (is_array($facetQuery)) { $facetQuery = new Solarium_Query_Select_Component_Facet_Query($facetQuery); } $key = $facetQuery->getKey(); if (0 === strlen($key)) { throw new Solarium_Exception('A facetquery must have a key value'); } if (array_key_exists($key, $this->_facetQueries)) { throw new Solarium_Exception('A query must have a unique key' . ' value within a multiquery facet'); } // forward shared excludes $facetQuery->addExcludes($this->getExcludes()); $this->_facetQueries[$key] = $facetQuery; return $this; }
public function testAddQueriesWithConfig() { $facetQuery1 = new Solarium_Query_Select_Component_Facet_Query(); $facetQuery1->setKey('k1'); $facetQuery1->setQuery('category:1'); $facetQuery1->addExcludes(array('fq1', 'fq2')); $facetQuery2 = new Solarium_Query_Select_Component_Facet_Query(); $facetQuery2->setKey('k2'); $facetQuery2->setQuery('category:2'); $facetQueries = array('k1' => $facetQuery1, 'k2' => $facetQuery2); $config = array(array('key' => 'k1', 'query' => 'category:1', 'exclude' => array('fq1', 'fq2')), 'k2' => array('query' => 'category:2')); $this->_facet->addQueries($config); $this->assertEquals($facetQueries, $this->_facet->getQueries()); }