From 600c9f3b3231e660d0f6cd672a4f37678d278437 Mon Sep 17 00:00:00 2001 From: KevinHivert Date: Wed, 7 Jun 2017 23:42:46 +0200 Subject: [PATCH 1/2] Fix column listing for postgres db driver. - Add getColumnListing() method in Illuminate\Database\Schema\PostgresBuilderto override default. - Update compileColumnListing() method in Illuminate\Database\Schema\Grammars\PostgresGrammar to filter listing by schema name. --- .../Schema/Grammars/PostgresGrammar.php | 5 ++-- .../Database/Schema/PostgresBuilder.php | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php b/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php index 65b2939a642c..ff43b0dd6f35 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); + } } From 4be4c433f6dfe411d847796555092f6c9623881b Mon Sep 17 00:00:00 2001 From: KevinHivert Date: Sat, 10 Jun 2017 17:45:59 +0200 Subject: [PATCH 2/2] Fixing StyleCI - Replace double quotes. --- src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php b/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php index ff43b0dd6f35..d0be812447ce 100755 --- a/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php +++ b/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php @@ -45,7 +45,7 @@ public function compileTableExists() */ public function compileColumnListing() { - return "select column_name from information_schema.columns where table_schema = ? and table_name = ?"; + return 'select column_name from information_schema.columns where table_schema = ? and table_name = ?'; } /**