ported fix for #6164 to sphinx

was already supported for BETWEEN but not for LIKE

fixes #6164
This commit is contained in:
Carsten Brandt
2014-11-23 01:54:33 +01:00
parent cc8ffe364e
commit d44c23bb00
3 changed files with 14 additions and 4 deletions

View File

@ -928,7 +928,9 @@ class QueryBuilder extends Object
list($column, $values) = $operands;
$values = (array) $values;
if (!is_array($values)) {
$values = [$values];
}
if (empty($values)) {
return $operator === 'LIKE' || $operator === 'OR LIKE' ? '0=1' : '';
@ -947,8 +949,15 @@ class QueryBuilder extends Object
$parts = [];
foreach ($values as $value) {
$phName = self::PARAM_PREFIX . count($params);
$params[$phName] = empty($escape) ? $value : ('%' . strtr($value, $escape) . '%');
if ($value instanceof Expression) {
foreach ($value->params as $n => $v) {
$params[$n] = $v;
}
$phName = $value->expression;
} else {
$phName = self::PARAM_PREFIX . count($params);
$params[$phName] = empty($escape) ? $value : ('%' . strtr($value, $escape) . '%');
}
$parts[] = "$column $operator $phName";
}