Query::filter() adjustments

This commit is contained in:
Alexander Makarov
2014-03-29 23:26:02 +04:00
parent a884c80fe3
commit 8cd247730a
7 changed files with 55 additions and 13 deletions

View File

@ -906,6 +906,16 @@ class Query extends Component implements QueryInterface
$operator = strtoupper($condition[0]);
switch ($operator) {
case 'NOT':
case 'AND':
case 'OR':
$subCondition = $this->filterCondition($condition[1]);
if ($this->parameterNotEmpty($subCondition)) {
$condition[1] = $subCondition;
} else {
$condition = [];
}
break;
case 'IN':
case 'NOT IN':
case 'LIKE':
@ -924,7 +934,7 @@ class Query extends Component implements QueryInterface
break;
}
} else {
$condition = $this->filterConditionHash($condition);
$condition = $this->filterHashCondition($condition);
}
return $condition;
}

View File

@ -109,7 +109,7 @@ trait QueryTrait
* @param array $condition original condition
* @return array condition with empty parameters removed
*/
protected function filterConditionHash($condition)
protected function filterHashCondition($condition)
{
if (is_array($condition) && !isset($condition[0])) {
// hash format: 'column1' => 'value1', 'column2' => 'value2', ...
@ -126,7 +126,7 @@ trait QueryTrait
*/
protected function filterCondition($condition)
{
return $this->filterConditionHash($condition);
return $this->filterHashCondition($condition);
}
/**