/** * Apply filters to the query * * @access protected * @param FilterInterface $filter * @param array $values */ protected function applyFilters(FilterInterface $filter, array $values) { $len = count($values); if ($len > 1) { $criteria = new OrCriteria(); $criteria->withQuery($this->query); foreach ($values as $value) { $currentFilter = clone $filter; $criteria->withFilter($currentFilter->withValue($value)); } $this->queryBuilder->withCriteria($criteria); } elseif ($len === 1) { $this->queryBuilder->withFilter($filter->withValue($values[0])); } }
/** * Set a filter * * @access public * @param FilterInterface $filter * @return QueryBuilder */ public function withFilter(FilterInterface $filter) { $filter->withQuery($this->query)->apply(); return $this; }