From f98c414cd11a98935d0aa10fcd4c81e5c75a57d5 Mon Sep 17 00:00:00 2001 From: Fourteenmeister Date: Thu, 15 May 2014 12:03:50 +0900 Subject: [PATCH] Update QueryBuilder.php solution used **heukirne** for the names of columns. --- framework/db/mssql/QueryBuilder.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/framework/db/mssql/QueryBuilder.php b/framework/db/mssql/QueryBuilder.php index 006e46ff69..96e812dc39 100644 --- a/framework/db/mssql/QueryBuilder.php +++ b/framework/db/mssql/QueryBuilder.php @@ -197,7 +197,7 @@ class QueryBuilder extends \yii\db\QueryBuilder $select = $query->select = '*'; } if ($select === '*') { - $columns = $this->getAllColumnNames($query->from[0]); + $columns = $this->getAllColumnNames($query->modelClass); if ($columns && is_array($columns)) $select = implode(', ', $columns); else @@ -209,13 +209,14 @@ class QueryBuilder extends \yii\db\QueryBuilder return $sql; } - protected function getAllColumnNames($table = null) + protected function getAllColumnNames($modelClass = null) { - if (!$table) { + if (!$modelClass) { return null; } - $columns = $this->db->createCommand("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='{$table}'")->queryColumn(); - array_walk($columns, create_function('&$str', '$str = "[$str]";')); + $model = new $modelClass; + $schema = $model->getTableSchema(); + $columns = array_keys($schema->columns); return $columns; }