From d526fdadc1de0f612dfc291f7d391f02a6d3a056 Mon Sep 17 00:00:00 2001 From: Joseph Woodruff Date: Wed, 2 Apr 2014 13:58:29 -0600 Subject: [PATCH 1/2] Base model class no longer changes an already defined schemaName value --- lib/Cake/Model/Model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Cake/Model/Model.php b/lib/Cake/Model/Model.php index 209b3e7c9..7e230d7d1 100644 --- a/lib/Cake/Model/Model.php +++ b/lib/Cake/Model/Model.php @@ -3485,7 +3485,7 @@ class Model extends Object implements CakeEventListener { $this->tablePrefix = $db->config['prefix']; } - $this->schemaName = $db->getSchemaName(); + $this->schemaName = (empty($this->schemaName) ? $db->getSchemaName() : $this->schemaName); } /** From 85363715010cc572f9bff31b920846a37b5769e5 Mon Sep 17 00:00:00 2001 From: Joseph Woodruff Date: Wed, 2 Apr 2014 13:59:04 -0600 Subject: [PATCH 2/2] Sqlserver Datasource how properly appends the schemaName prefix in the describe() method --- lib/Cake/Model/Datasource/Database/Sqlserver.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/Cake/Model/Datasource/Database/Sqlserver.php b/lib/Cake/Model/Datasource/Database/Sqlserver.php index b6b0c4bf2..db7d34212 100644 --- a/lib/Cake/Model/Datasource/Database/Sqlserver.php +++ b/lib/Cake/Model/Datasource/Database/Sqlserver.php @@ -195,26 +195,30 @@ class Sqlserver extends DboSource { * @throws CakeException */ public function describe($model) { - $table = $this->fullTableName($model, false); - $cache = parent::describe($table); + $table = $this->fullTableName($model, false, false); + $fulltable = $this->fullTableName($model, false, true); + + $cache = parent::describe($fulltable); if ($cache) { return $cache; } + $fields = array(); - $table = $this->fullTableName($model, false, false); $schema = $model->schemaName; + $cols = $this->_execute( "SELECT COLUMN_NAME as Field, DATA_TYPE as Type, - COL_LENGTH('" . $table . "', COLUMN_NAME) as Length, + COL_LENGTH('" . ($schema ? $fulltable : $table) . "', COLUMN_NAME) as Length, IS_NULLABLE As [Null], COLUMN_DEFAULT as [Default], - COLUMNPROPERTY(OBJECT_ID('" . $table . "'), COLUMN_NAME, 'IsIdentity') as [Key], + COLUMNPROPERTY(OBJECT_ID('" . ($schema ? $fulltable : $table) . "'), COLUMN_NAME, 'IsIdentity') as [Key], NUMERIC_SCALE as Size FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '" . $table . "'" . ($schema ? " AND TABLE_SCHEMA = '" . $schema . "'" : '') ); + if (!$cols) { throw new CakeException(__d('cake_dev', 'Could not describe table for %s', $table)); }