Разбиение на страницы с пользовательской директивой распознавания полей - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь добиться следующего: я хочу запрос, который ищет модель, этот запрос может быть сложным и, следовательно, нуждается в отдельном преобразователе или в каком-то месте, где я могу поместить свои логики c.

Что идет не так: это мой запрос

fighters(q: String): [FighterProfile] @field(resolver: "App\\Http\\Controllers\\FighterProfileController@search")

Это мой распознаватель

public function search($rootValue, array $args, GraphQLContext $context, ResolveInfo $resolveInfo) {
    $user = auth()->user();
    $q = isset($args['q']) ? $args['q'] : null;

    $query = FighterProfile::distinct();

    // admin and federation can see all fighters
    if ($user->type === 'member') {
        $fighterProfile = $user->fighterProfile;

        $query->where('club_id', $fighterProfile->club_id);
    }

    if ($q) {
        $query->where(function ($subQuery) use ($q) {
           $subQuery->where('first_name', 'LIKE', '%' . $q . '%')
           ->orWhere('last_name', 'LIKE', '%' . $q . '%');
        });
    }

    $query->where('type', 'fighter');
    return $query->paginate(25);
}

Теперь вывод - это просто список из 25 элементов без информации о нумерацией страниц. Когда я пытаюсь добавить директиву @paginate, я получаю следующую ошибку

Node [fighters] can only have one directive of type [Nuwave\\Lighthouse\\Support\\Contracts\\FieldResolver] but found []

Как я могу добавить свои пользовательские логи c, но при этом все еще иметь нумерацию страниц?

1 Ответ

0 голосов
/ 12 марта 2020

Вы не можете объединить @field с @paginate, но вы можете объединить @paginate с @builder.

Если вам все еще нужен пользовательский преобразователь, вы можете создать свою собственную пользовательскую директиву, как https://lighthouse-php.slack.com/archives/CB28A070S/p1574102072286100?thread_ts=1574101207.285300

...