@@ -222,7 +222,13 @@ protected function resolveFieldValue(AbstractField $field, $contextValue, Query
222
222
{
223
223
$ resolveInfo = new ResolveInfo ($ field , $ query ->getFields (), $ field ->getType (), $ this ->executionContext );
224
224
225
- return $ field ->resolve ($ contextValue , $ this ->parseArgumentsValues ($ field , $ query ), $ resolveInfo );
225
+ if ($ resolveFunc = $ field ->getConfig ()->getResolveFunction ()) {
226
+ return $ resolveFunc ($ contextValue , $ this ->parseArgumentsValues ($ field , $ query ), $ resolveInfo );
227
+ } elseif ($ propertyValue = TypeService::getPropertyValue ($ contextValue , $ field ->getName ())) {
228
+ return $ propertyValue ;
229
+ } else {
230
+ return $ field ->resolve ($ contextValue , $ this ->parseArgumentsValues ($ field , $ query ), $ resolveInfo );
231
+ }
226
232
}
227
233
228
234
/**
@@ -251,9 +257,10 @@ protected function getPreResolvedValue($contextValue, FieldAst $fieldAst, Abstra
251
257
$ resolved = true ;
252
258
}
253
259
254
- if ($ field ->getConfig ()->getResolveFunction ()) {
260
+ if ($ resolveFunction = $ field ->getConfig ()->getResolveFunction ()) {
255
261
$ resolveInfo = new ResolveInfo ($ field , [$ fieldAst ], $ field ->getType (), $ this ->executionContext );
256
- $ resolverValue = $ field ->resolve ($ resolved ? $ resolverValue : $ contextValue , $ fieldAst ->getKeyValueArguments (), $ resolveInfo );
262
+
263
+ $ resolverValue = $ resolveFunction ($ resolved ? $ resolverValue : $ contextValue , $ fieldAst ->getKeyValueArguments (), $ resolveInfo );
257
264
}
258
265
259
266
if (!$ resolverValue && !$ resolved ) {
0 commit comments