toPlainObject(); $props['fields'] = static::fetchFields($object); ksort($props); // TODO: ksort in toPlainObject? return (object) $props; } public static function fetchFields(IcingaObject $object) { return static::loadFieldReferences( $object->getConnection(), $object->getShortTableName(), $object->get('id') ); } /** * @param Db $connection * @param string $type Warning: this will not be validated. * @param int $id * @return array */ public static function loadFieldReferences(Db $connection, $type, $id) { $db = $connection->getDbAdapter(); $res = $db->fetchAll( $db->select()->from([ 'f' => "icinga_${type}_field" ], [ 'f.datafield_id', 'f.is_required', 'f.var_filter', ])->join(['df' => 'director_datafield'], 'df.id = f.datafield_id', []) ->where("${type}_id = ?", $id) ->order('varname ASC') ); if (empty($res)) { return []; } foreach ($res as $field) { $field->datafield_id = (int) $field->datafield_id; } return $res; } }