Как отфильтровать запрос Graphql со значением поля в Laravel 5.8 с помощью Lighthouse

У меня есть пользователи, которые могут создавать списки. Списки могут быть помечены звездочками («избранными», если хотите). Я хочу создать запрос 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
     }
   }
 }

Любая идея о том, как это реализовать?

В вашем пользовательском типе добавьте поле/отношение к спискам, и тогда вы сможете сделать это так же, как в своем запросе с аргументом и директивой eq. маяк-php.com/master/eloquent/relationships.html

Oliver Nybroe 21.07.2019 12:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
1
1 448
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
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. Но аутентификация работает нормально. Любая идея, почему?

Geraud Schmit 23.07.2019 00:14

Собственно, причина была в том, что плагин использует собственный тип User. Мой был перепрошит. Задача решена.

Geraud Schmit 23.07.2019 12:14

Другие вопросы по теме