From b397b01966a6393d18cc86673207575149fdba09 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Thu, 6 Jul 2017 14:10:15 +0200 Subject: [PATCH] DbRepository: Avoid to overwrite foreign keys in $aliasTableMap and $aliasColumnMap --- library/Icinga/Repository/DbRepository.php | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/library/Icinga/Repository/DbRepository.php b/library/Icinga/Repository/DbRepository.php index cbf98947f..039d22142 100644 --- a/library/Icinga/Repository/DbRepository.php +++ b/library/Icinga/Repository/DbRepository.php @@ -252,8 +252,22 @@ abstract class DbRepository extends Repository implements Extensible, Updatable, $prefixedAlias = $table . '_' . $alias; } - $this->aliasTableMap[$prefixedAlias] = $table; - $this->aliasColumnMap[$prefixedAlias] = $this->aliasColumnMap[$alias]; + if (array_key_exists($prefixedAlias, $this->aliasTableMap)) { + if ($this->aliasTableMap[$prefixedAlias] !== null) { + $existingTable = $this->aliasTableMap[$prefixedAlias]; + $existingColumn = $this->aliasColumnMap[$prefixedAlias]; + $this->aliasTableMap[$existingTable . '.' . $prefixedAlias] = $existingTable; + $this->aliasColumnMap[$existingTable . '.' . $prefixedAlias] = $existingColumn; + $this->aliasTableMap[$prefixedAlias] = null; + $this->aliasColumnMap[$prefixedAlias] = null; + } + + $this->aliasTableMap[$table . '.' . $prefixedAlias] = $table; + $this->aliasColumnMap[$table . '.' . $prefixedAlias] = $this->aliasColumnMap[$alias]; + } else { + $this->aliasTableMap[$prefixedAlias] = $table; + $this->aliasColumnMap[$prefixedAlias] = $this->aliasColumnMap[$alias]; + } } } }