public function execute($key, $value, QueryFilter $queryFilter) { if (!preg_match(static::$commandRegex, $value, $matches)) { return false; } $data = trim($matches[1]); $queryFilter->addCriteria(new Criteria(Criteria::TYPE_CONDITION_EQUAL, $key, $data)); return true; }
public function execute(array $query, QueryFilter $queryFilter) { if (!isset($query[$this->commandName])) { return false; } $value = $query[$this->commandName]; $queryFilter->addCriteria(new Criteria(Criteria::TYPE_SPECIAL_LIMIT, null, (int) $value)); return true; }
public function execute($key, $value, QueryFilter $queryFilter) { $value = explode(',', $value); $value = array_map('trim', $value); $value = array_filter($value, function ($el) { return $el !== ''; }); $queryFilter->addCriteria(new Criteria(Criteria::TYPE_CONDITION_IN_ARRAY, $key, $value)); return true; }
public function execute(array $query, QueryFilter $queryFilter) { if (!isset($query[$this->commandName])) { return false; } $value = $query[$this->commandName]; $value = explode(',', $value); $value = array_map('trim', $value); $queryFilter->addCriteria(new Criteria(Criteria::TYPE_SPECIAL_FIELDS, $value, null)); return true; }
public function execute(array $query, QueryFilter $queryFilter) { if (!isset($query[$this->commandName])) { return false; } $value = $query[$this->commandName]; /** @var Criteria $limitCriteria */ if ($limitCriteria = $queryFilter->getCriteria(Criteria::TYPE_SPECIAL_LIMIT)) { $limitValue = $limitCriteria->getValue(); $offsetValue = $limitValue * ((int) $value - 1); $queryFilter->addCriteria(new Criteria(Criteria::TYPE_SPECIAL_OFFSET, null, $offsetValue)); } return true; }
public function execute($key, $value, QueryFilter $queryFilter) { if (!preg_match(static::$commandRegex, $value, $matches)) { return false; } $command = trim($matches[1]); $start = trim($matches[2]); $end = trim($matches[3]); if ($start > $end) { list($start, $end) = [$end, $start]; } $queryFilter->addCriteria(new Criteria($command, $key, [$start, $end])); return true; }
private function setOrderBy(QueryFilter $queryFilter, $value) { $value = explode(',', $value); $value = array_map('trim', $value); $value = array_filter($value, function ($el) { return $el !== ''; }); foreach ($value as $sortColumn) { $order = 'asc'; if ($sortColumn[0] === '-') { $sortColumn = substr($sortColumn, 1); $order = 'desc'; } $queryFilter->addCriteria(new Criteria(Criteria::TYPE_SPECIAL_SORT, $sortColumn, $order)); } }