Laravel+GraphQL Lighthouse教程的后半部分

教程

我将继续进行Laravel+GraphQL Lighthouse教程,这是上次的延续。

议程

    1. 在字段中添加分页器

 

    1. 创建和更新Eloquent模型

 

    验证发送到服务器的值

需要的时间:大约10分钟。

在字段中添加分页器(Pagination)。

可以参考此链接进行查询:https://lighthouse-php.com/master/api-reference/directives.html#paginate

type Query {
    # posts: [Post!]! @all
    posts: [Post!]! @paginate
}

模式定义将自动转换为以下内容。

type Query {
  posts(first: Int!, page: Int): PostPaginator
}

"A paginated list of Post items."
type PostPaginator {
  "A list of Post items."
  data: [Post!]!

  "Pagination information about the list of items."
  paginatorInfo: PaginatorInfo!
}
{
  posts(first: 5) {
    data {
      id
      title
    }
    paginatorInfo {
      currentPage
      lastPage
    }
  }
}
スクリーンショット 2020-05-07 23.11.03.png

我可以輕鬆地實現分頁。連Laravel的程式碼都沒寫…真厲害(真厲害)

2. 创建和更新 Eloquent 模型

请按照这个参考链接进行操作:https://lighthouse-php.com/master/eloquent/getting-started.html#create

创造

我們將實現在數據庫中創建用戶的處理。

type Mutation {
  createUser(
    name: String!
    email: String!
    password: String!
  ): User! @create
}

创建操作使用传递给字段的参数来创建新的模型实例。

mutation {
  createUser(
    name: "foo"
    email: "foo@example.com"
    password: "secret"
  ) {
    id
    name
  }
}
スクリーンショット 2020-05-08 0.02.10.png

更新

我們需要實現更新數據庫中已註冊的使用者的功能。

type Mutation {
  updateUser(
    id: ID!
    name: String
  ): User @update
}
mutation {
  updateUser(id: "4", name: "bar") {
    id
    name
  }
}
スクリーンショット 2020-05-08 21.17.51.png

3. 对发送到服务器的值进行验证

请参考这个链接进行操作。

使用Laravel标准的验证规则的简单方法是使用@rules指令。

type Mutation {
  createUser(email: String @rules(apply: ["email"])): User
}

当发生验证错误时,Lighthouse将停止执行并将验证消息作为响应的一部分返回。

mutation {
  createUser(
    name: "hoge"
    email: "hogehoge@example.com"
    password: "secret"
  ) {
    id
    name
  }
}
{
  "errors": [
    {
      "message": "Validation failed for the field [createUser].",
      "extensions": {
        "validation": {
          "email": [
            "The email must be a valid email address."
          ]
        },
        "category": "validation"
      },
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "createUser"
      ],
      "trace": [
        {
          "file": "/Users/ucan/work/lighthouse-tutorial/vendor/nuwave/lighthouse/src/Execution/ErrorBuffer.php",
          "line": 64,
          "call": "Nuwave\\Lighthouse\\Execution\\ErrorBuffer::Nuwave\\Lighthouse\\Execution\\{closure}('Validation failed for the field [createUser].', instance of Nuwave\\Lighthouse\\Execution\\ErrorBuffer)"
        },
        // トレースログは省略
      ]
    }
  ]
}
スクリーンショット 2020-05-08 21.26.18.png

最后

以上是Laravel+GraphQL Lighthouse教程的结束。
想要了解更详细的使用方法,请参考官方文档。
https://lighthouse-php.com/master/getting-started/installation.html

广告
将在 10 秒后关闭
bannerAds