Laravel+GraphQL Lighthouse教程的后半部分
教程
我将继续进行Laravel+GraphQL Lighthouse教程,这是上次的延续。
议程
-
- 在字段中添加分页器
-
- 创建和更新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
}
}
}
我可以輕鬆地實現分頁。連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
}
}
更新
我們需要實現更新數據庫中已註冊的使用者的功能。
type Mutation {
updateUser(
id: ID!
name: String
): User @update
}
mutation {
updateUser(id: "4", name: "bar") {
id
name
}
}
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)"
},
// トレースログは省略
]
}
]
}
最后
以上是Laravel+GraphQL Lighthouse教程的结束。
想要了解更详细的使用方法,请参考官方文档。
https://lighthouse-php.com/master/getting-started/installation.html