/** * @param $filterName * * @return null|AbstractFilter */ public function make($filterName) { if ($this->validator && !$this->validator->validate($filterName)) { return null; } if ($this->transformer) { $class = __NAMESPACE__ . '\\' . $this->transformer->transform($filterName); } else { $class = __NAMESPACE__ . '\\' . $filterName; } if (!class_exists($class)) { return null; } return new $class(); }
/** * @param array $fieldList * * @return string */ public function generatePredicateList(array $fieldList) { if (!$this->transformer) { throw new QueryBuilderException('Missing transformer for generic ids in SQL!'); } $predicateList = []; $queryParam = $this->getQueryParam(); foreach ($fieldList as $name) { if (!empty($queryParam[$name]) && is_array($queryParam[$name])) { $tName = $this->transformer->transform($name); $predicate = "{$name} IN ("; for ($i = 0, $c = count($queryParam[$name]); $i < $c; $i++) { $predicate .= $tName . $i . ','; } $predicate = rtrim($predicate, ','); $predicate .= ")"; $predicateList[] = $predicate; } else { $predicateList[] = "{$name} = " . $this->transformer->transform($name); } } return $predicateList; }