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
    }
  }
}
Другие вопросы по тегам