diff --git a/extensions/sphinx/CHANGELOG.md b/extensions/sphinx/CHANGELOG.md index 8dca261..56c78c1 100644 --- a/extensions/sphinx/CHANGELOG.md +++ b/extensions/sphinx/CHANGELOG.md @@ -4,7 +4,7 @@ Yii Framework 2 sphinx extension Change Log 2.0.1 under development ----------------------- -- no changes in this release. +- Bug #5601: Simple conditions in Query::where() and ActiveQuery::where() did not allow `yii\db\Expression` to be used as the value (cebe, stevekr) 2.0.0 October 12, 2014 @@ -41,6 +41,7 @@ Yii Framework 2 sphinx extension Change Log All relational queries are now directly served by `ActiveQuery` allowing to use custom scopes in relations (cebe) + 2.0.0-alpha, December 1, 2013 ----------------------------- diff --git a/extensions/sphinx/QueryBuilder.php b/extensions/sphinx/QueryBuilder.php index e5e9cf4..40534b0 100644 --- a/extensions/sphinx/QueryBuilder.php +++ b/extensions/sphinx/QueryBuilder.php @@ -1085,6 +1085,11 @@ class QueryBuilder extends Object if ($value === null) { return "$column $operator NULL"; + } elseif ($value instanceof Expression) { + foreach ($value->params as $n => $v) { + $params[$n] = $v; + } + return "$column $operator {$value->expression}"; } else { $phName = self::PARAM_PREFIX . count($params); $params[$phName] = $value; diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index e8335bb..915d62b 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -4,10 +4,11 @@ Yii Framework 2 Change Log 2.0.1 under development ----------------------- -- Enh #5600: Allow configuring debug panels in `yii\debug\Module::panels` as panel class name strings (qiangxue) -- Enh #5613: Added `--overwrite` option to Gii console command to support overwriting all files (motin, qiangxue) - Bug #5584: `yii\rbac\DbRbacManager` should not delete items when deleting a rule on a database not supporting cascade update (mdmunir) +- Bug #5601: Simple conditions in Query::where() and ActiveQuery::where() did not allow `yii\db\Expression` to be used as the value (cebe, stevekr) - Bug: Gii console command help information does not contain global options (qiangxue) +- Enh #5600: Allow configuring debug panels in `yii\debug\Module::panels` as panel class name strings (qiangxue) +- Enh #5613: Added `--overwrite` option to Gii console command to support overwriting all files (motin, qiangxue) 2.0.0 October 12, 2014 diff --git a/framework/db/QueryBuilder.php b/framework/db/QueryBuilder.php index cbee58d..7ef66bd 100644 --- a/framework/db/QueryBuilder.php +++ b/framework/db/QueryBuilder.php @@ -1238,6 +1238,11 @@ class QueryBuilder extends \yii\base\Object if ($value === null) { return "$column $operator NULL"; + } elseif ($value instanceof Expression) { + foreach ($value->params as $n => $v) { + $params[$n] = $v; + } + return "$column $operator {$value->expression}"; } else { $phName = self::PARAM_PREFIX . count($params); $params[$phName] = $value; diff --git a/tests/unit/framework/db/QueryBuilderTest.php b/tests/unit/framework/db/QueryBuilderTest.php index 0daaa58..5d71f20 100644 --- a/tests/unit/framework/db/QueryBuilderTest.php +++ b/tests/unit/framework/db/QueryBuilderTest.php @@ -2,6 +2,7 @@ namespace yiiunit\framework\db; +use yii\db\Expression; use yii\db\Query; use yii\db\QueryBuilder; use yii\db\Schema; @@ -193,6 +194,8 @@ class QueryBuilderTest extends DatabaseTestCase [ ['<=', 'a', 'b'], '"a" <= :qp0', [':qp0' => 'b'] ], [ ['<>', 'a', 3], '"a" <> :qp0', [':qp0' => 3] ], [ ['!=', 'a', 'b'], '"a" != :qp0', [':qp0' => 'b'] ], + [ ['>=', 'date', new Expression('DATE_SUB(NOW(), INTERVAL 1 MONTH)')], '"date" >= DATE_SUB(NOW(), INTERVAL 1 MONTH)', [] ], + [ ['>=', 'date', new Expression('DATE_SUB(NOW(), INTERVAL :month MONTH)', [':month' => 2])], '"date" >= DATE_SUB(NOW(), INTERVAL :month MONTH)', [':month' => 2] ], ]; // adjust dbms specific escaping