yii\db\QueryTrait::filterCondition PHP Method

filterCondition() protected method

Removes [[isEmpty()|empty operands]] from the given query condition.
protected filterCondition ( array $condition ) : array
$condition array the original condition
return array the condition with [[isEmpty()|empty operands]] removed.
    protected function filterCondition($condition)
    {
        if (!is_array($condition)) {
            return $condition;
        }
        if (!isset($condition[0])) {
            // hash format: 'column1' => 'value1', 'column2' => 'value2', ...
            foreach ($condition as $name => $value) {
                if ($this->isEmpty($value)) {
                    unset($condition[$name]);
                }
            }
            return $condition;
        }
        // operator format: operator, operand 1, operand 2, ...
        $operator = array_shift($condition);
        switch (strtoupper($operator)) {
            case 'NOT':
            case 'AND':
            case 'OR':
                foreach ($condition as $i => $operand) {
                    $subCondition = $this->filterCondition($operand);
                    if ($this->isEmpty($subCondition)) {
                        unset($condition[$i]);
                    } else {
                        $condition[$i] = $subCondition;
                    }
                }
                if (empty($condition)) {
                    return [];
                }
                break;
            case 'BETWEEN':
            case 'NOT BETWEEN':
                if (array_key_exists(1, $condition) && array_key_exists(2, $condition)) {
                    if ($this->isEmpty($condition[1]) || $this->isEmpty($condition[2])) {
                        return [];
                    }
                }
                break;
            default:
                if (array_key_exists(1, $condition) && $this->isEmpty($condition[1])) {
                    return [];
                }
        }
        array_unshift($condition, $operator);
        return $condition;
    }