diff --git a/library/Icinga/Repository/DbRepository.php b/library/Icinga/Repository/DbRepository.php index c30d89d55..cbf98947f 100644 --- a/library/Icinga/Repository/DbRepository.php +++ b/library/Icinga/Repository/DbRepository.php @@ -235,6 +235,29 @@ abstract class DbRepository extends Repository implements Extensible, Updatable, return $queryColumns; } + /** + * Initialize table, column and alias maps + * + * @throws ProgrammingError In case $this->queryColumns does not provide any column information + */ + protected function initializeAliasMaps() + { + parent::initializeAliasMaps(); + + foreach ($this->aliasTableMap as $alias => $table) { + if ($table !== null) { + if (strpos($alias, '.') !== false) { + $prefixedAlias = str_replace('.', '_', $alias); + } else { + $prefixedAlias = $table . '_' . $alias; + } + + $this->aliasTableMap[$prefixedAlias] = $table; + $this->aliasColumnMap[$prefixedAlias] = $this->aliasColumnMap[$alias]; + } + } + } + /** * Return the given table with the datasource's prefix being prepended * diff --git a/library/Icinga/Repository/Repository.php b/library/Icinga/Repository/Repository.php index 62edc31ed..b00a2a278 100644 --- a/library/Icinga/Repository/Repository.php +++ b/library/Icinga/Repository/Repository.php @@ -644,11 +644,6 @@ abstract class Repository implements Selectable } foreach ($queryColumns as $table => $columns) { - foreach ($columns as $alias => $column) { - $alias = is_string($alias) ? $alias : $column; - $columns[$table . '_' . $alias] = $column; - } - foreach ($columns as $alias => $column) { if (! is_string($alias)) { $key = $column;