diff --git a/src/Database/Table/SqlBuilder.php b/src/Database/Table/SqlBuilder.php index 66eac6a20..0da3ac63d 100644 --- a/src/Database/Table/SqlBuilder.php +++ b/src/Database/Table/SqlBuilder.php @@ -423,7 +423,9 @@ public function addAlias($chain, $alias) protected function checkUniqueTableName($tableName, $chain) { - if (isset($this->aliases[$tableName]) && ('.' . $tableName === $chain)) { + $chain = ltrim($chain, '.'); + + if (isset($this->aliases[$tableName]) && ($tableName === $chain)) { $chain = $this->aliases[$tableName]; } if (isset($this->reservedTableNames[$tableName])) { @@ -568,9 +570,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]); }