Laravel Lighthouse GraphQL - сортировка на стороне сервера
Привет, я новичок в GraphQL и пытаюсь отсортировать данные по содержимому столбцов. У меня есть конечная точка запроса, куда я могу отправить:
query {
user(count:20, firstName:"Foo") {
data {
name
region
birthDate
}
}
}
И в результате получается массив из 20 пользователей с именем Foo
, Но я хочу заказать их по birthDate
, Я уже столько всего перепробовал, но просто не могу разобраться. Я уже пытался предугадывать sort
а также orderBy
после firstName, но я всегда получаю такие ошибки, как:
{
"errors": [
{
"message": "Unknown argument \"sort\" on field \"user\" of type \"Query\".",
"extensions": {
"category": "graphql"
},
"locations": [
{
"line": 2,
"column": 31
}
]
}
]
}
Я использую Laravel Lighthouse для работы с GraphQL. Я удивлен, что не смог найти никакой информации относительно того, как это сделать.
Мой запрос:
type Query {
user(firstName: String @eq): [User!]! @paginate(type: "paginator" model: "App\\User")
}
type User {
id: ID!
firstName: String!
lastName: String!
birthDate: DateTime!
email: String!
created_at: DateTime!
updated_at: DateTime!
}
1 ответ
Решение
Поискив еще час, я наконец нашел его. Я обновил свой файл graphql так:
type Query {
user(firstName: String @eq orderBy: [OrderByClause!] @orderBy): [User!]! @paginate(type: "paginator" model: "App\\User")
}
type User {
id: ID!
firstName: String!
lastName: String!
birthDate: DateTime!
email: String!
created_at: DateTime!
updated_at: DateTime!
}
input OrderByClause{
field: String!
order: SortOrder!
}
enum SortOrder {
ASC
DESC
}
Теперь с помощью этого запроса можно будет правильно отсортировать их по рождению:
query {
user(count:20, firstName:"Foo", orderBy: [
{
field: "birthDate"
order: DESC
}
]) {
data {
name
region
birthDate
}
}
}