Laravel Маяк: использование @paginate в связанных моделях лишает возможности напрямую запрашивать модель - PullRequest
0 голосов
/ 14 января 2020

Предположим, у нас есть Серии и Эпизоды, и у каждой Серии есть много Эпизодов:

type Query {
  series: [Series!]! @paginate(defaultCount: 10)
  series(id: ID @eq): Series @find

  episodes: [Episode!]! @paginate(defaultCount: 10)
  episode(id: ID @eq): Episode @find
}

type Series {
  id: ID!
  title: String!
  episodes: [Episode]! @hasMany
  plot: String!
}

type Episode {
  id: ID!
  title: String!
  season: Int!
  series: Series! @belongsTo
  plot: String!
}

Все работает отлично. Мы можем запросить серии и эпизоды, и они разбиты на страницы.

Документы Lighthouse говорят, что мы также можем разбивать на страницы отношения, установив type в директиве @hasMany (https://lighthouse-php.com/master/api-reference/directives.html#hasmany) следующим образом :

type Series {
  id: ID!
  title: String!
  episodes: [Episode]! @hasMany(type: "paginator")
  plot: String!
}

Это прекрасно работает при запросах к сериям, подобным этому:

query series {
  series {
    paginatorInfo {
      total
      currentPage
      hasMorePages
    }
    data {
      title
      episodes {
        paginatorInfo {
          total
          currentPage
          hasMorePages
        }
        data {
          title
        }
      }
    }
  }
}

Ряд и каждый их эпизод разбиваются на страницы.

Но теперь я больше не могу запрашивать эпизоды напрямую:

query episodes {
  episodes {
    paginatorInfo {
      total
      currentPage
      hasMorePages
    }
    data {
      title
    }
  }
}

Это возвращает ошибку No class 'EpisodePaginator' was found for directive 'paginate'" Что это значит точно, и как я могу получить возможность разбивать на страницы как связанные модели, так и все модели напрямую?

Ответы [ 2 ]

1 голос
/ 18 января 2020

Эта ошибка была исправлена ​​в v4.8.1 https://github.com/nuwave/lighthouse/releases/tag/v4.8.1

1 голос
/ 14 января 2020

Все выглядит правильно за исключением для того факта, что у вас есть два запроса с одинаковым именем:

type Query {
  series: [Series!]! @paginate(defaultCount: 10)
  series(id: ID @eq): Series @find
}

Вам нужно будет изменить один из них. Я подозреваю, что происходит то, что вы перезаписываете разбитый на страницы запрос с запросом, который захватывает только одну серию.

Попробуйте изменить имя множественного запроса на allSeries или что-то в этом роде, и посмотрите, исправляет ли это ваш запрос. выпуск.

...