From d3579f4ca5f0b22d8bb877776cd4cd482161e77f Mon Sep 17 00:00:00 2001 From: Vlado Senasi Date: Fri, 12 Aug 2016 11:39:34 +0200 Subject: [PATCH 1/3] Fixed joinWhere with aliases and .tables --- src/Database/Table/SqlBuilder.php | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/Database/Table/SqlBuilder.php b/src/Database/Table/SqlBuilder.php index 66eac6a20..c4fa9db33 100644 --- a/src/Database/Table/SqlBuilder.php +++ b/src/Database/Table/SqlBuilder.php @@ -416,14 +416,14 @@ public function addAlias($chain, $alias) if (isset($chain[0]) && $chain[0] !== '.' && $chain[0] !== ':') { $chain = '.' . $chain; // unified chain format } - $this->checkUniqueTableName($alias, $chain); + $this->checkUniqueTableName($alias, ltrim($chain, '.')); $this->aliases[$alias] = $chain; } protected function checkUniqueTableName($tableName, $chain) { - if (isset($this->aliases[$tableName]) && ('.' . $tableName === $chain)) { + if (isset($this->aliases[$tableName]) && ($tableName === $chain)) { $chain = $this->aliases[$tableName]; } if (isset($this->reservedTableNames[$tableName])) { @@ -568,9 +568,17 @@ protected function getSortedJoins($table, & $leftJoinDependency, & $tableJoins, } } $finalJoins += $tableJoins[$table]; - $this->parameters['joinConditionSorted'] += isset($this->parameters['joinCondition'][$this->reservedTableNames[$table]]) - ? [$table => $this->parameters['joinCondition'][$this->reservedTableNames[$table]]] - : []; + + if (array_key_exists($table, $this->aliases)) { + $this->parameters['joinConditionSorted'] += isset($this->parameters['joinCondition'][$table]) + ? [$table => $this->parameters['joinCondition'][$table]] + : []; + } else { + $this->parameters['joinConditionSorted'] += isset($this->parameters['joinCondition'][$this->reservedTableNames[$table]]) + ? [$table => $this->parameters['joinCondition'][$this->reservedTableNames[$table]]] + : []; + } + unset($tableJoins[$table]); unset($this->expandingJoins[$table]); } From ed8ef706910f4ae9ead811d5213a55a5456728f3 Mon Sep 17 00:00:00 2001 From: Vlado Senasi Date: Fri, 12 Aug 2016 11:44:10 +0200 Subject: [PATCH 2/3] Fixed joinWhere with aliases and .tables --- src/Database/Table/SqlBuilder.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Database/Table/SqlBuilder.php b/src/Database/Table/SqlBuilder.php index c4fa9db33..6a478ce7b 100644 --- a/src/Database/Table/SqlBuilder.php +++ b/src/Database/Table/SqlBuilder.php @@ -416,13 +416,15 @@ public function addAlias($chain, $alias) if (isset($chain[0]) && $chain[0] !== '.' && $chain[0] !== ':') { $chain = '.' . $chain; // unified chain format } - $this->checkUniqueTableName($alias, ltrim($chain, '.')); + $this->checkUniqueTableName($alias, $chain); $this->aliases[$alias] = $chain; } protected function checkUniqueTableName($tableName, $chain) { + $chain = ltrim($chain, '.'); + if (isset($this->aliases[$tableName]) && ($tableName === $chain)) { $chain = $this->aliases[$tableName]; } From ac41e5cee9d2f8a384eee82632858f2a428dd8df Mon Sep 17 00:00:00 2001 From: Vlado Senasi Date: Fri, 12 Aug 2016 11:55:43 +0200 Subject: [PATCH 3/3] Fixed indents --- src/Database/Table/SqlBuilder.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Database/Table/SqlBuilder.php b/src/Database/Table/SqlBuilder.php index 6a478ce7b..0da3ac63d 100644 --- a/src/Database/Table/SqlBuilder.php +++ b/src/Database/Table/SqlBuilder.php @@ -423,7 +423,7 @@ public function addAlias($chain, $alias) protected function checkUniqueTableName($tableName, $chain) { - $chain = ltrim($chain, '.'); + $chain = ltrim($chain, '.'); if (isset($this->aliases[$tableName]) && ($tableName === $chain)) { $chain = $this->aliases[$tableName]; @@ -571,15 +571,15 @@ protected function getSortedJoins($table, & $leftJoinDependency, & $tableJoins, } $finalJoins += $tableJoins[$table]; - if (array_key_exists($table, $this->aliases)) { - $this->parameters['joinConditionSorted'] += isset($this->parameters['joinCondition'][$table]) - ? [$table => $this->parameters['joinCondition'][$table]] - : []; - } else { - $this->parameters['joinConditionSorted'] += isset($this->parameters['joinCondition'][$this->reservedTableNames[$table]]) - ? [$table => $this->parameters['joinCondition'][$this->reservedTableNames[$table]]] - : []; - } + if (array_key_exists($table, $this->aliases)) { + $this->parameters['joinConditionSorted'] += isset($this->parameters['joinCondition'][$table]) + ? [$table => $this->parameters['joinCondition'][$table]] + : []; + } else { + $this->parameters['joinConditionSorted'] += isset($this->parameters['joinCondition'][$this->reservedTableNames[$table]]) + ? [$table => $this->parameters['joinCondition'][$this->reservedTableNames[$table]]] + : []; + } unset($tableJoins[$table]); unset($this->expandingJoins[$table]);