DbRepository: Fix that virtual tables are not resolved for statement columns

This commit is contained in:
Johannes Meyer 2017-05-30 13:57:58 +02:00
parent af81006bce
commit b2d86df660
1 changed files with 9 additions and 1 deletions

View File

@ -26,6 +26,8 @@ use Icinga\Util\StringHelper;
* <li>Differentiation between statement and query columns</li>
* <li>Capability to join additional tables depending on the columns being selected or used in a filter</li>
* </ul>
*
* @method DbConnection getDataSource($table = null)
*/
abstract class DbRepository extends Repository implements Extensible, Updatable, Reducible
{
@ -262,8 +264,8 @@ abstract class DbRepository extends Repository implements Extensible, Updatable,
*/
protected function applyTableAlias($table, $virtualTable = null)
{
$tableAliases = $this->getTableAliases();
if (! is_array($table)) {
$tableAliases = $this->getTableAliases();
if ($virtualTable !== null && isset($tableAliases[$virtualTable])) {
return array($tableAliases[$virtualTable] => $table);
}
@ -588,6 +590,12 @@ abstract class DbRepository extends Repository implements Extensible, Updatable,
}
$table = $newTable;
} else {
$virtualTables = $this->getVirtualTables();
if (isset($virtualTables[$table])) {
$virtualTable = $table;
$table = $virtualTables[$table];
}
}
return $this->prependTablePrefix($this->applyTableAlias($table, $virtualTable));