diff --git a/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php b/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php index 65b2939a642c..d0be812447ce 100755 --- a/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php +++ b/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php @@ -41,12 +41,11 @@ public function compileTableExists() /** * Compile the query to determine the list of columns. * - * @param string $table * @return string */ - public function compileColumnListing($table) + public function compileColumnListing() { - return "select column_name from information_schema.columns where table_name = '$table'"; + return 'select column_name from information_schema.columns where table_schema = ? and table_name = ?'; } /** diff --git a/src/Illuminate/Database/Schema/PostgresBuilder.php b/src/Illuminate/Database/Schema/PostgresBuilder.php index f8f21d499d2b..1bf37ab6f8f7 100755 --- a/src/Illuminate/Database/Schema/PostgresBuilder.php +++ b/src/Illuminate/Database/Schema/PostgresBuilder.php @@ -58,4 +58,27 @@ protected function getAllTables() $this->grammar->compileGetAllTables($this->connection->getConfig('schema')) ); } + + /** + * Get the column listing for a given table. + * + * @param string $table + * @return array + */ + public function getColumnListing($table) + { + if (is_array($schema = $this->connection->getConfig('schema'))) { + $schema = head($schema); + } + + $schema = $schema ? $schema : 'public'; + + $table = $this->connection->getTablePrefix().$table; + + $results = $this->connection->select( + $this->grammar->compileColumnListing(), [$schema, $table] + ); + + return $this->connection->getPostProcessor()->processColumnListing($results); + } }