diff --git a/extensions/sphinx/QueryBuilder.php b/extensions/sphinx/QueryBuilder.php index 860e629..ef3628d 100644 --- a/extensions/sphinx/QueryBuilder.php +++ b/extensions/sphinx/QueryBuilder.php @@ -871,8 +871,28 @@ class QueryBuilder extends Object if ($value instanceof Expression) { $actualValue = $value->expression; } else { - $actualValue = self::PARAM_PREFIX . count($params); - $params[$actualValue] = $value; + if (is_array($value)) { + $actualValueParts = []; + foreach ($value as $key => $valuePart) { + if (is_numeric($key)) { + $actualValuePart = ''; + } else { + $actualValuePart = $key . ' = '; + } + if ($valuePart instanceof Expression) { + $actualValuePart .= $valuePart->expression; + } else { + $phName = self::PARAM_PREFIX . count($params); + $params[$phName] = $valuePart; + $actualValuePart .= $phName; + } + $actualValueParts[] = $actualValuePart; + } + $actualValue = '(' . implode(', ', $actualValueParts) . ')'; + } else { + $actualValue = self::PARAM_PREFIX . count($params); + $params[$actualValue] = $value; + } } $optionLines[] = $name . ' = ' . $actualValue; } diff --git a/tests/unit/extensions/sphinx/QueryTest.php b/tests/unit/extensions/sphinx/QueryTest.php index 36bf95d..3a7d2c3 100644 --- a/tests/unit/extensions/sphinx/QueryTest.php +++ b/tests/unit/extensions/sphinx/QueryTest.php @@ -131,6 +131,10 @@ class QueryTest extends SphinxTestCase ->where("MATCH('about')") ->options([ 'cutoff' => 50, + 'field_weights' => [ + 'title' => 10, + 'content' => 3, + ], ]) ->all($connection); $this->assertNotEmpty($rows);