yii\elasticsearch\QueryBuilder::buildInCondition PHP Method

buildInCondition() private method

private buildInCondition ( $operator, $operands )
    private function buildInCondition($operator, $operands)
    {
        if (!isset($operands[0], $operands[1])) {
            throw new InvalidParamException("Operator '{$operator}' requires two operands.");
        }
        list($column, $values) = $operands;
        $values = (array) $values;
        if (empty($values) || $column === []) {
            return $operator === 'in' ? ['terms' => ['_uid' => []]] : [];
            // this condition is equal to WHERE false
        }
        if (count($column) > 1) {
            return $this->buildCompositeInCondition($operator, $column, $values);
        } elseif (is_array($column)) {
            $column = reset($column);
        }
        $canBeNull = false;
        foreach ($values as $i => $value) {
            if (is_array($value)) {
                $values[$i] = $value = isset($value[$column]) ? $value[$column] : null;
            }
            if ($value === null) {
                $canBeNull = true;
                unset($values[$i]);
            }
        }
        if ($column == '_id') {
            if (empty($values) && $canBeNull) {
                // there is no null pk
                $filter = ['terms' => ['_uid' => []]];
                // this condition is equal to WHERE false
            } else {
                $filter = ['ids' => ['values' => array_values($values)]];
                if ($canBeNull) {
                    $filter = ['or' => [$filter, ['missing' => ['field' => $column, 'existence' => true, 'null_value' => true]]]];
                }
            }
        } else {
            if (empty($values) && $canBeNull) {
                $filter = ['missing' => ['field' => $column, 'existence' => true, 'null_value' => true]];
            } else {
                $filter = ['in' => [$column => array_values($values)]];
                if ($canBeNull) {
                    $filter = ['or' => [$filter, ['missing' => ['field' => $column, 'existence' => true, 'null_value' => true]]]];
                }
            }
        }
        if ($operator == 'not in') {
            $filter = ['not' => $filter];
        }
        return $filter;
    }