У меня есть пользователи, которые могут создавать списки. Списки могут быть помечены звездочками («избранными», если хотите). Я хочу создать запрос Graphql в Lighthouse/Laravel, который будет получать все списки избранных/избранных для данного пользователя.
Я попробовал этот запрос, и он работает:
clistsByStarred(user_id: Int! @eq, starred: Boolean! @eq): [Clist] @all
и тогда я могу использовать его так:
query {
clistsByStarred(user_id: 1, starred: true) {
id
name
starred
}
}
Но мне это кажется грязным взломом.
Чего я хотел бы добиться, так это:
query {
user(id: 1) {
id
name
clistsByStarred {
id
name
starred
}
}
}
Любая идея о том, как это реализовать?






type User {
id: ID!
clists(starred: Boolean @eq): Clist @hasMany
Этот пример дает вам тип пользователя, который имеет список типов Clist. Затем вы просто добавляете поле в свой запрос, чтобы получить одного пользователя по идентификатору.
Когда вы запрашиваете это, вы можете указать параметр, отмеченный звездочкой, чтобы получить только звездочку.
Чтобы это работало, отношения должны существовать в вашей красноречивой модели. https://lighthouse-php.com/master/eloquent/relationships.html
Раньше работало нормально. Но потом я установил Passport и плагин lighthouse-graphql-passport-auth, и он больше не работает. Вот снимок экрана Graphql Playground. Но аутентификация работает нормально. Любая идея, почему?
Собственно, причина была в том, что плагин использует собственный тип User. Мой был перепрошит. Задача решена.
В вашем пользовательском типе добавьте поле/отношение к спискам, и тогда вы сможете сделать это так же, как в своем запросе с аргументом и директивой eq. маяк-php.com/master/eloquent/relationships.html