From c08041ade15af738496559cceae1ee46d2d7cb46 Mon Sep 17 00:00:00 2001 From: Matt Stone Date: Fri, 8 Dec 2017 11:14:15 -0800 Subject: [PATCH 1/4] Check for schema in table name before defaulting to first array value --- .../Database/Schema/PostgresBuilder.php | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/src/Illuminate/Database/Schema/PostgresBuilder.php b/src/Illuminate/Database/Schema/PostgresBuilder.php index 73a1cf4b2eb9..fd2968d7d47c 100755 --- a/src/Illuminate/Database/Schema/PostgresBuilder.php +++ b/src/Illuminate/Database/Schema/PostgresBuilder.php @@ -12,11 +12,7 @@ class PostgresBuilder extends Builder */ public function hasTable($table) { - if (is_array($schema = $this->connection->getConfig('schema'))) { - $schema = head($schema); - } - - $schema = $schema ? $schema : 'public'; + [ $schema, $table ] = $this->getSchema($table); $table = $this->connection->getTablePrefix().$table; @@ -75,11 +71,7 @@ protected function getAllTables() */ public function getColumnListing($table) { - if (is_array($schema = $this->connection->getConfig('schema'))) { - $schema = head($schema); - } - - $schema = $schema ? $schema : 'public'; + [ $schema, $table ] = $this->getSchema($table); $table = $this->connection->getTablePrefix().$table; @@ -89,4 +81,30 @@ public function getColumnListing($table) return $this->connection->getPostProcessor()->processColumnListing($results); } + + /** + * Determines which schema should be used + * Returns and array of schema and table name + * less schema name if found + * + * @param string $table + * @return [ string, string ] + */ + protected function getSchema($table) + { + $table = explode('.', $table); + $schema = $this->connection->getConfig('schema'); + + if (is_array($schema)) { + if (in_array($table[0], $schema)) { + return [ $table[0], $table[1] ]; + } + + $schema = head($schema); + } + + $schema = $schema ?: 'public'; + + return [ $schema, implode('.', $table) ]; + } } From 34e9386175db03ca9bd31a6ed0656a734673e59e Mon Sep 17 00:00:00 2001 From: Matt Stone Date: Fri, 8 Dec 2017 11:22:24 -0800 Subject: [PATCH 2/4] Support table names with periods --- src/Illuminate/Database/Schema/PostgresBuilder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Database/Schema/PostgresBuilder.php b/src/Illuminate/Database/Schema/PostgresBuilder.php index fd2968d7d47c..89d0bba50f86 100755 --- a/src/Illuminate/Database/Schema/PostgresBuilder.php +++ b/src/Illuminate/Database/Schema/PostgresBuilder.php @@ -96,8 +96,8 @@ protected function getSchema($table) $schema = $this->connection->getConfig('schema'); if (is_array($schema)) { - if (in_array($table[0], $schema)) { - return [ $table[0], $table[1] ]; + if (in_array($table[0], $schema)) { // Table contains schema prefix + return [ array_shift($table), implode('.', $table) ]; } $schema = head($schema); From d44d156aaa545c3231608a423728523a976c4e4b Mon Sep 17 00:00:00 2001 From: Matt Stone Date: Fri, 8 Dec 2017 11:38:07 -0800 Subject: [PATCH 3/4] Simplify doc block --- src/Illuminate/Database/Schema/PostgresBuilder.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Illuminate/Database/Schema/PostgresBuilder.php b/src/Illuminate/Database/Schema/PostgresBuilder.php index 89d0bba50f86..b2848da9c522 100755 --- a/src/Illuminate/Database/Schema/PostgresBuilder.php +++ b/src/Illuminate/Database/Schema/PostgresBuilder.php @@ -83,9 +83,7 @@ public function getColumnListing($table) } /** - * Determines which schema should be used - * Returns and array of schema and table name - * less schema name if found + * Determines which schema should be used. * * @param string $table * @return [ string, string ] From 1b162ff9606f0b9079637923457d4de2a957c74b Mon Sep 17 00:00:00 2001 From: Matt Stone Date: Fri, 8 Dec 2017 11:44:39 -0800 Subject: [PATCH 4/4] Apply StyleCI patch --- src/Illuminate/Database/Schema/PostgresBuilder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Database/Schema/PostgresBuilder.php b/src/Illuminate/Database/Schema/PostgresBuilder.php index b2848da9c522..5232e91da08c 100755 --- a/src/Illuminate/Database/Schema/PostgresBuilder.php +++ b/src/Illuminate/Database/Schema/PostgresBuilder.php @@ -95,7 +95,7 @@ protected function getSchema($table) if (is_array($schema)) { if (in_array($table[0], $schema)) { // Table contains schema prefix - return [ array_shift($table), implode('.', $table) ]; + return [array_shift($table), implode('.', $table)]; } $schema = head($schema); @@ -103,6 +103,6 @@ protected function getSchema($table) $schema = $schema ?: 'public'; - return [ $schema, implode('.', $table) ]; + return [$schema, implode('.', $table)]; } }