public function buildCondition($condition)
{
static $builders = ['not' => 'buildNotCondition', 'and' => 'buildAndCondition', 'or' => 'buildAndCondition', 'between' => 'buildBetweenCondition', 'not between' => 'buildBetweenCondition', 'in' => 'buildInCondition', 'not in' => 'buildInCondition', 'like' => 'buildLikeCondition', 'not like' => 'buildLikeCondition', 'or like' => 'buildLikeCondition', 'or not like' => 'buildLikeCondition', 'lt' => 'buildHalfBoundedRangeCondition', '<' => 'buildHalfBoundedRangeCondition', 'lte' => 'buildHalfBoundedRangeCondition', '<=' => 'buildHalfBoundedRangeCondition', 'gt' => 'buildHalfBoundedRangeCondition', '>' => 'buildHalfBoundedRangeCondition', 'gte' => 'buildHalfBoundedRangeCondition', '>=' => 'buildHalfBoundedRangeCondition'];
if (empty($condition)) {
return [];
}
if (!is_array($condition)) {
throw new NotSupportedException('String conditions in where() are not supported by elasticsearch.');
}
if (isset($condition[0])) {
// operator format: operator, operand 1, operand 2, ...
$operator = strtolower($condition[0]);
if (isset($builders[$operator])) {
$method = $builders[$operator];
array_shift($condition);
return $this->{$method}($operator, $condition);
} else {
throw new InvalidParamException('Found unknown operator in query: ' . $operator);
}
} else {
// hash format: 'column1' => 'value1', 'column2' => 'value2', ...
return $this->buildHashCondition($condition);
}
}