/** * Filter by multi select value * @param Filter\FilterMultiSelect $filter * @return void */ public function applyFilterMultiSelect(Filter\FilterMultiSelect $filter) { $condition = $filter->getCondition(); $values = $condition[$filter->getColumn()]; $expr = '('; foreach ($values as $value) { $expr .= "%column = %any OR "; $params[] = $filter->getColumn(); $params[] = "{$value}"; } $expr = preg_replace('/ OR $/', ')', $expr); array_unshift($params, $expr); call_user_func_array([$this->data_source->getQueryBuilder(), 'andWhere'], $params); }
/** * Filter by multi select value * @param Filter\FilterMultiSelect $filter * @return void */ public function applyFilterMultiSelect(Filter\FilterMultiSelect $filter) { $values = $filter->getCondition()[$filter->getColumn()]; $expr = Criteria::expr()->in($filter->getColumn(), $values); $this->criteria->andWhere($expr); }
/** * Filter by multi select value * @param Filter\FilterMultiSelect $filter * @return void */ public function applyFilterMultiSelect(Filter\FilterMultiSelect $filter) { $condition = $filter->getCondition(); $values = $condition[$filter->getColumn()]; $or = '('; if (sizeof($values) > 1) { $length = sizeof($values); $i = 1; foreach ($values as $value) { if ($i == $length) { $or .= $filter->getColumn() . ' = ?)'; } else { $or .= $filter->getColumn() . ' = ? OR '; } $i++; } array_unshift($values, $or); call_user_func_array([$this->data_source, 'where'], $values); } else { $this->data_source->where($filter->getColumn() . ' = ?', reset($values)); } }
/** * Filter by multi select value * @param mixed $row * @param FilterMultiSelect $filter * @return void */ public function applyFilterMultiSelect($row, FilterMultiSelect $filter) { $condition = $filter->getCondition(); $values = $condition[$filter->getColumn()]; return in_array($row[$filter->getColumn()], $values); }
/** * Filter by multi select value * @param Filter\FilterMultiSelect $filter */ public function applyFilterMultiSelect(Filter\FilterMultiSelect $filter) { $c = $this->checkAliases($filter->getColumn()); $p = $this->getPlaceholder(); $values = $filter->getCondition()[$filter->getColumn()]; $expr = $this->data_source->expr()->in($c, '?' . $p); $this->data_source->andWhere($expr)->setParameter($p, $values); }
/** * Filter by multi select value * * @param Filter\FilterMultiSelect $filter * * @return void */ public function applyFilterMultiSelect(Filter\FilterMultiSelect $filter) { $condition = $filter->getCondition(); $values = $condition[$filter->getColumn()]; $or = '('; if (sizeof($values) > 1) { $length = sizeof($values); $i = 1; foreach ($values as $value) { if ($i == $length) { $or .= $filter->getColumn() . ' = ?)'; } else { $or .= $filter->getColumn() . ' = ? OR '; } $i++; } array_unshift($values, $or); $this->filter[] = $values; } else { $this->filter[$filter->getColumn() . ' = ?'] = reset($values); } }
/** * Filter by multiselect value * @param Filter\FilterMultiSelect $filter * @return void */ public function applyFilterMultiSelect(Filter\FilterMultiSelect $filter) { $or = []; $args = []; $big_or = ''; $big_or_args = []; $condition = $filter->getCondition(); foreach ($condition as $column => $values) { $queryPart = '('; foreach ($values as $value) { $queryPart .= "{$column} = ? OR "; $args[] = $value; } $queryPart = substr($queryPart, 0, strlen($queryPart) - 4) . ')'; $or[] = $queryPart; $big_or .= "{$queryPart} OR "; $big_or_args = array_merge($big_or_args, $args); } if (sizeof($or) > 1) { $or = substr($big_or, 0, strlen($big_or) - 4) . ')'; $args = $big_or_args; } else { $or = reset($or); } $this->sql = $this->queryHelper->whereSql($or); foreach ($args as $arg) { $this->query_parameters[] = $arg; } }