From 49b4d2591c8993246228c62c18a5d0e27620cee7 Mon Sep 17 00:00:00 2001 From: Aaron Carlino Date: Wed, 7 Apr 2021 16:38:17 +1200 Subject: [PATCH] Add inheritance check for field mapping --- src/Schema/DataObject/Resolver.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Schema/DataObject/Resolver.php b/src/Schema/DataObject/Resolver.php index ca392242..86914ed9 100644 --- a/src/Schema/DataObject/Resolver.php +++ b/src/Schema/DataObject/Resolver.php @@ -26,11 +26,19 @@ class Resolver */ public static function resolve($obj, $args = [], $context = [], ?ResolveInfo $info = null) { - $fieldName = $info->fieldName; $context = SchemaConfigProvider::get($context); - $fieldName = $context->mapFieldByClassName(get_class($obj), $fieldName); - $result = $fieldName ? FieldAccessor::singleton()->accessField($obj, $fieldName[1]) : null; + $class = get_class($obj); + $resolvedField = null; + while (!$resolvedField && $class !== DataObject::class) { + $resolvedField = $context->mapFieldByClassName($class, $fieldName); + $class = get_parent_class($class); + } + + if (!$resolvedField) { + return null; + } + $result = FieldAccessor::singleton()->accessField($obj, $resolvedField[1]); if ($result instanceof DBField) { return $result->getValue(); }