Laravel Lighthouse 在哪里放置非根字段解析器?
Laravel Lighthouse Where to place non root field resolvers?
在 lighthouse 文档的示例中,他们给出了解析非根字段的示例方法。
<?php
use App\Models\User;
function resolveUserId(User $user): string
{
return $user->name; // test...
}
所以我的猜测是 lighthouse 将搜索 resolveUser{Field} 方法,如果存在则调用它。但是我该把方法放在哪里呢?示例中没有 class 名称或命名空间。
类型查询@guard(with: ["api"]) {
我:用户! @auth
}
type User {
id: ID!
name: String!
email: String!
posts (content_contains: [String]): [Post!]! @hasMany #Would like to be able to resolve content_contains somehow...
created_at: DateTime!
updated_at: DateTime!
}
文档URL:
https://lighthouse-php.com/4.9/the-basics/fields.html#resolving-non-root-fields
例如,您要使用 @field
吗?它可以是任何 class,具有任何名称空间。一定要明确它。例如,在 app/Graphql/UserPostsResolver.php
中,您可以使用 class 和 handle
函数。所以在你的模式中你会使用 posts: [Post!] @field(resolver: "App\Graphql\UserPostsResolver@handle")
在 lighthouse 文档的示例中,他们给出了解析非根字段的示例方法。
<?php
use App\Models\User;
function resolveUserId(User $user): string
{
return $user->name; // test...
}
所以我的猜测是 lighthouse 将搜索 resolveUser{Field} 方法,如果存在则调用它。但是我该把方法放在哪里呢?示例中没有 class 名称或命名空间。
类型查询@guard(with: ["api"]) { 我:用户! @auth }
type User {
id: ID!
name: String!
email: String!
posts (content_contains: [String]): [Post!]! @hasMany #Would like to be able to resolve content_contains somehow...
created_at: DateTime!
updated_at: DateTime!
}
文档URL:
https://lighthouse-php.com/4.9/the-basics/fields.html#resolving-non-root-fields
例如,您要使用 @field
吗?它可以是任何 class,具有任何名称空间。一定要明确它。例如,在 app/Graphql/UserPostsResolver.php
中,您可以使用 class 和 handle
函数。所以在你的模式中你会使用 posts: [Post!] @field(resolver: "App\Graphql\UserPostsResolver@handle")