From 672a45b26e76a9147db9ffeb776c4da56eaa95e2 Mon Sep 17 00:00:00 2001 From: Markus Frosch Date: Mon, 31 Oct 2016 17:17:56 +0100 Subject: [PATCH] IcingaObject: loadAllByType should respect PrefetchCache --- library/Director/Objects/IcingaObject.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/library/Director/Objects/IcingaObject.php b/library/Director/Objects/IcingaObject.php index 101350fd..dda59036 100644 --- a/library/Director/Objects/IcingaObject.php +++ b/library/Director/Objects/IcingaObject.php @@ -2101,12 +2101,22 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer public static function loadAllByType($type, Db $db, $query = null, $keyColumn = 'object_name') { + /** @var DbObject $class */ $class = self::classByType($type); if (is_array($class::create()->getKeyName())) { return $class::loadAll($db, $query); } else { - return $class::loadAll($db, $query, $keyColumn); + if (PrefetchCache::shouldBeUsed() && $query === null && $keyColumn === 'object_name') { + $result = array(); + foreach ($class::prefetchAll($db) as $row) { + $result[$row->object_name] = $row; + } + return $result; + } + else { + return $class::loadAll($db, $query, $keyColumn); + } } }