/** * Apply the filter to the ModelCriteria instance. * * @param ProxyQueryInterface $query * @param string $alias * @param string $field * @param string $value */ public function filter(ProxyQueryInterface $query, $alias, $field, $value) { $map = $this->getCriteriaMap(); $comparison = !empty($map[$value['type']]) ? $map[$value['type']] : null; /* @var $query ModelCriteria */ if (empty($comparison)) { $query->filterBy($field, sprintf($this->getOption('format', '%s'), $value['value'])); } else { $query->filterBy($field, sprintf($this->getOption('format', '%s'), $value['value']), $comparison); } }
/** * Apply the filter to the ModelCriteria instance. * * @param ProxyQueryInterface $query * @param string $alias * @param string $field * @param string $value */ public function filter(ProxyQueryInterface $query, $alias, $field, $value) { $map = $this->getCriteriaMap(); if ($value['value'] instanceof PropelObjectCollection) { $comparison = $value['type'] === ChoiceType::TYPE_NOT_CONTAINS ? $map[$value['type']] : Criteria::IN; $query->filterBy($field, $value['value'], $comparison); } else { $comparison = $map[$value['type'] ?: ChoiceType::TYPE_CONTAINS]; $query->filterBy($field, $value['value'], $comparison); } }
/** * Apply the filter to the ModelCriteria instance. * * @param ProxyQueryInterface $query * @param string $alias * @param string $field * @param string $value */ public function filter(ProxyQueryInterface $query, $alias, $field, $value) { $map = $this->getCriteriaMap(); if (!array_key_exists('value', $value) || !array_key_exists($value['value'], $map)) { return; } /* @var $query ModelCriteria */ $query->filterBy($field, true, $map[$value['value']]); }
/** * Filters according to a given single date/datetime. * * @param ProxyQueryInterface $query * @param string $field * @param string $value */ protected function filterDate(ProxyQueryInterface $query, $field, $data) { // default type for simple filter $data['type'] = !isset($data['type']) || !is_numeric($data['type']) ? DateType::TYPE_EQUAL : $data['type']; // just find an operator and apply query $operator = $this->getOperator($data['type']); // transform types if ($this->getOption('input_type') === 'timestamp') { $data['value'] = $data['value'] instanceof \DateTime ? $data['value']->getTimestamp() : 0; } $query->filterBy($field, $data['value'], $operator); }
/** * @todo Add support for related classes. * @todo Add support for multi-column primary key. * * @param string $class * @param \Sonata\AdminBundle\Datagrid\ProxyQueryInterface $query * @param array $idx */ public function addIdentifiersToQuery($class, ProxyQueryInterface $query, array $idx) { if (null !== ($column = $this->getModelIdentifier($class))) { $query->filterBy($column, $idx, \Criteria::IN); } }