Exemplo n.º 1
0
 /**
  * Add an additional filter expression to this query
  *
  * This notifies the repository about each required filter column.
  *
  * @param   Filter  $filter
  *
  * @return  $this
  */
 public function addFilter(Filter $filter)
 {
     $this->query->addFilter($this->repository->requireFilter($this->target, $filter, $this));
     return $this;
 }
Exemplo n.º 2
0
 /**
  * Recurse the given filter, require each column for the given table and convert all values
  *
  * In case of a PostgreSQL connection, this applies LOWER() on the column and strtolower()
  * on the value if a COLLATE SQL-instruction is part of the resolved column.
  *
  * @param   string              $table      The table being filtered
  * @param   Filter              $filter     The filter to recurse
  * @param   RepositoryQuery     $query      An optional query to pass as context
  *                                          (Directly passed through to $this->requireFilterColumn)
  * @param   bool                $clone      Whether to clone $filter first
  *
  * @return  Filter                          The udpated filter
  */
 public function requireFilter($table, Filter $filter, RepositoryQuery $query = null, $clone = true)
 {
     $filter = parent::requireFilter($table, $filter, $query, $clone);
     if ($filter->isExpression()) {
         $column = $filter->getColumn();
         if (in_array($column, $this->columnsWithoutCollation) && strpos($column, 'LOWER') !== 0) {
             $filter->setColumn('LOWER(' . $column . ')');
             $expression = $filter->getExpression();
             if (is_array($expression)) {
                 $filter->setExpression(array_map('strtolower', $expression));
             } else {
                 $filter->setExpression(strtolower($expression));
             }
         }
     }
     return $filter;
 }