framework/db/QueryTrait.php
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;
    }
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;
    }
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 ; }
Removes [[isEmpty()|empty operands]] from the given query condition.

@param array $condition the original condition
@return array the condition with [[isEmpty()|empty operands]] removed.
@throws NotSupportedException if the condition operator is not supported
Removes [[ isEmpty () |empty operands ]] from the given query condition .