Repository: Fix broken conversion rules

The additional layers in $aliasTableMap and $aliasColumnMap required
for DbRepository's join probabilities are now only established there.
This commit is contained in:
Johannes Meyer 2017-06-20 08:32:44 +02:00
parent 8ee6e763a6
commit 46647444c4
2 changed files with 23 additions and 5 deletions

View File

@ -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
*

View File

@ -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;