diff --git a/framework/db/dao/QueryBuilder.php b/framework/db/dao/QueryBuilder.php
index f26118b..fbbc05e 100644
--- a/framework/db/dao/QueryBuilder.php
+++ b/framework/db/dao/QueryBuilder.php
@@ -21,7 +21,7 @@ class QueryBuilder extends \yii\base\Component
/**
* @var array the abstract column types mapped to physical column types.
*/
- public $columnTypes = array(
+ public $typeMap = array(
'pk' => 'int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY',
'string' => 'varchar(255)',
'text' => 'text',
@@ -379,7 +379,7 @@ class QueryBuilder extends \yii\base\Component
/**
* Converts an abstract column type into a physical column type.
- * The conversion is done using the type map specified in {@link columnTypes}.
+ * The conversion is done using the type map specified in {@link typeMap}.
* These abstract column types are supported (using MySQL as example to explain the corresponding
* physical types):
*
@@ -405,12 +405,12 @@ class QueryBuilder extends \yii\base\Component
*/
public function getColumnType($type)
{
- if (isset($this->columnTypes[$type])) {
- return $this->columnTypes[$type];
+ if (isset($this->typeMap[$type])) {
+ return $this->typeMap[$type];
}
elseif (($pos = strpos($type, ' ')) !== false) {
$t = substr($type, 0, $pos);
- return (isset($this->columnTypes[$t]) ? $this->columnTypes[$t] : $t) . substr($type, $pos);
+ return (isset($this->typeMap[$t]) ? $this->typeMap[$t] : $t) . substr($type, $pos);
}
else {
return $type;
diff --git a/framework/db/dao/mysql/QueryBuilder.php b/framework/db/dao/mysql/QueryBuilder.php
index 9ec5842..497f457 100644
--- a/framework/db/dao/mysql/QueryBuilder.php
+++ b/framework/db/dao/mysql/QueryBuilder.php
@@ -49,33 +49,27 @@ class QueryBuilder extends \yii\db\dao\QueryBuilder
*/
public function renameColumn($table, $name, $newName)
{
- $db = $this->getDbConnection();
- $row = $db->createCommand('SHOW CREATE TABLE ' . $db->quoteTableName($table))->queryRow();
+ $quotedTable = $this->schema->quoteTableName($table);
+ $row = $this->connection->createCommand('SHOW CREATE TABLE ' . $quotedTable)->queryRow();
if ($row === false)
throw new CDbException(Yii::t('yii', 'Unable to find "{column}" in table "{table}".', array('{column}' => $name, '{table}' => $table)));
- if (isset($row['Create Table']))
+ if (isset($row['Create Table'])) {
$sql = $row['Create Table'];
- else
- {
+ }
+ else {
$row = array_values($row);
$sql = $row[1];
}
- if (preg_match_all('/^\s*`(.*?)`\s+(.*?),?$/m', $sql, $matches))
- {
- foreach ($matches[1] as $i => $c)
- {
- if ($c === $name)
- {
- return "ALTER TABLE " . $db->quoteTableName($table)
- . " CHANGE " . $db->quoteColumnName($name)
- . ' ' . $db->quoteColumnName($newName) . ' ' . $matches[2][$i];
+ if (preg_match_all('/^\s*`(.*?)`\s+(.*?),?$/m', $sql, $matches)) {
+ foreach ($matches[1] as $i => $c) {
+ if ($c === $name) {
+ return "ALTER TABLE $quotedTable CHANGE " . $this->schema->quoteColumnName($name)
+ . ' ' . $this->schema->quoteColumnName($newName) . ' ' . $matches[2][$i];
}
}
}
-
// try to give back a SQL anyway
- return "ALTER TABLE " . $db->quoteTableName($table)
- . " CHANGE " . $db->quoteColumnName($name) . ' ' . $newName;
+ return "ALTER TABLE $quotedTable CHANGE " . $this->schema->quoteColumnName($name) . ' ' . $newName;
}
/**
@@ -87,7 +81,7 @@ class QueryBuilder extends \yii\db\dao\QueryBuilder
*/
public function dropForeignKey($name, $table)
{
- return 'ALTER TABLE ' . $this->quoteTableName($table)
- . ' DROP FOREIGN KEY ' . $this->quoteColumnName($name);
+ return 'ALTER TABLE ' . $this->schema->quoteTableName($table)
+ . ' DROP FOREIGN KEY ' . $this->schema->quoteColumnName($name);
}
}