好吧,我解决了创建指令:
<?php
namespace App\GraphQL\Directives;
use Closure;
use GraphQL\Type\Definition\ResolveInfo;
use Nuwave\Lighthouse\Schema\Values\FieldValue;
use Nuwave\Lighthouse\Support\Contracts\Directive;
use Nuwave\Lighthouse\Support\Contracts\FieldMiddleware;
use Nuwave\Lighthouse\Support\Contracts\GraphQLContext;
class belongsToSameModelDirective implements Directive, FieldMiddleware
{
public function name(): string
{
return 'belongsToSameModel';
}
public function handleField(FieldValue $fieldValue, Closure $next): FieldValue
{
$previousResolver = $fieldValue->getResolver();
$wrappedResolver = function ($root, array $args, GraphQLContext $context, ResolveInfo $info) use ($previousResolver) {
$result = $previousResolver($root, $args, $context, $info);
return $result;
};
$fieldValue->setResolver($wrappedResolver);
return $next($fieldValue);
}
}
它有效,实际上比问题本身更简单