public function testToArray() { $filter = new Range(); $fromTo = array('from' => 'ra', 'to' => 'ru'); $filter->addField('name', $fromTo); $expectedArray = array('range' => array('name' => $fromTo)); $this->assertEquals($expectedArray, $filter->toArray()); }
/** * @group unit */ public function testToArray() { $field = 'field_name'; $range = array('gte' => 10, 'lte' => 99); $filter = new Range(); $filter->addField($field, $range); $expectedArray = array('range' => array($field => $range)); $this->assertEquals($expectedArray, $filter->toArray()); }
/** * @param $appliedFilters * @param $elasticaQuery * * @return array */ public function applyFilterToElasticaQuery($appliedFilters, $elasticaQuery) { $rangeFilters = new BoolOr(); $boolFilter = new BoolFilter(); $filters = []; $termFilters = []; foreach ($appliedFilters as $facet) { if (strpos($facet[key($facet)], '|') !== false) { $filters[key($facet)][] = ['range' => explode('|', $facet[key($facet)])]; } else { $filters[key($facet)][] = $facet[key($facet)]; } } foreach ($filters as $name => $value) { if (is_array($value[0])) { foreach ($value as $range) { $rangeFilter = new FilterRange(); $rangeFilter->addField($name, ['gte' => $range['range'][0], 'lte' => $range['range'][1]]); $rangeFilters->addFilter($rangeFilter); } $boolFilter->addShould($rangeFilters); } else { $termFilters = new FilterTerms(); $termFilters->setTerms($name, $value); $boolFilter->addShould($termFilters); } } $elasticaQuery->setFilter($boolFilter); return [$termFilters, $rangeFilters, $boolFilter, $filters]; }