From b83f06268f9b9d7287d90530fb98922aff91722b Mon Sep 17 00:00:00 2001 From: DarkDef Date: Thu, 4 Jun 2020 23:12:32 +0300 Subject: [PATCH] Fix #18041: Fix RBAC migration for MSSQL --- framework/CHANGELOG.md | 1 + .../m200409_110543_rbac_update_mssql_trigger.php | 14 +++++--------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index e4b4008d89..4c49f20e78 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -9,6 +9,7 @@ Yii Framework 2 Change Log - Bug #18026: Fix `ArrayHelper::getValue()` did not work with `ArrayAccess` objects (mikk150) - Enh #18048: Use `Instance::ensure()` to set `User::$accessChecker` (lav45) - Bug #18051: Fix missing support for custom validation method in EachValidator (bizley) +- Bug #18041: Fix RBAC migration for MSSQL (darkdef) 2.0.35 May 02, 2020 diff --git a/framework/rbac/migrations/m200409_110543_rbac_update_mssql_trigger.php b/framework/rbac/migrations/m200409_110543_rbac_update_mssql_trigger.php index 7243810b2c..f005eea842 100644 --- a/framework/rbac/migrations/m200409_110543_rbac_update_mssql_trigger.php +++ b/framework/rbac/migrations/m200409_110543_rbac_update_mssql_trigger.php @@ -41,15 +41,11 @@ class m200409_110543_rbac_update_mssql_trigger extends Migration ->from(['fkc' => 'sys.foreign_key_columns']) ->innerJoin(['c' => 'sys.columns'], 'fkc.parent_object_id = c.object_id AND fkc.parent_column_id = c.column_id') ->innerJoin(['r' => 'sys.columns'], 'fkc.referenced_object_id = r.object_id AND fkc.referenced_column_id = r.column_id') - ->where( - [ - 'AND', - ['fkc.parent_object_id' => $this->db->schema->getRawTableName($table)], - ['fkc.referenced_object_id' => $this->db->schema->getRawTableName($referenceTable)], - ['c.name' => $column], - ['r.name' => $referenceColumn], - ] - )->scalar($this->db); + ->andWhere('fkc.parent_object_id=OBJECT_ID(:fkc_parent_object_id)',[':fkc_parent_object_id' => $this->db->schema->getRawTableName($table)]) + ->andWhere('fkc.referenced_object_id=OBJECT_ID(:fkc_referenced_object_id)',[':fkc_referenced_object_id' => $this->db->schema->getRawTableName($referenceTable)]) + ->andWhere(['c.name' => $column]) + ->andWhere(['r.name' => $referenceColumn]) + ->scalar($this->db); } /**