在 lighthouse graphql 文件中声明变量
Posted
技术标签:
【中文标题】在 lighthouse graphql 文件中声明变量【英文标题】:Declare variable in lighthouse graphql files 【发布时间】:2020-09-17 01:35:27 【问题描述】:我已经创建了一个这样的 graphql 文件:
type Field
id: ID!
name_en: String!
name_fa: String!
description: String!
img_url: String!
created_at: DateTime!
updated_at: DateTime!
subFields: [SubField] @hasMany
extend type Query
fields(input: ListInput @spread): [Field] @paginate(model: "App\\Models\\CustomerManagement\\BusinessInformation\\Field" defaultCount: 10)
field(id: ID! @eq): Field @find(model: "App\\Models\\CustomerManagement\\BusinessInformation\\Field")
extend type Mutation
createField(
name_en: String! @rules(apply: ["required"])
name_fa: String
description: String
img_url: String
): Field @create(model: "App\\Models\\CustomerManagement\\BusinessInformation\\Field")
updateField(
id: ID! @rules(apply: ["required", "int"])
name_en: String @rules(apply: ["required"])
name_fa: String
description: String
img_url: String
): Field @update(model: "App\\Models\\CustomerManagement\\BusinessInformation\\Field")
deleteField(
id: ID! @rules(apply: ["required", "int"])
): Field @delete(model: "App\\Models\\CustomerManagement\\BusinessInformation\\Field")
每次我想引用Field
模型时,我都必须输入整个App\\Models\\CustomerManagement\\BusinessInformation\\Field
。我想知道是否可以声明像 model_namespace
这样的变量并使用它来代替大模型命名空间。
【问题讨论】:
【参考方案1】:编辑:
https://lighthouse-php.com/4.4/api-reference/directives.html#namespace
您应该使用@namespace 指令
extend type Query @namespace(field: "App\\Blog")
posts: [Post!]! @field(resolver: "Post@resolveAll")
您有几个选择: 您基本上可以使用命名空间配置加载默认命名空间数组: https://github.com/nuwave/lighthouse/pull/525/files
或者使用组指令: https://lighthouse-php.com/3.0/api-reference/directives.html#group
【讨论】:
您提供的第一个链接并不是我真正想要的,第二个链接在 lighthouse v3 中,但我使用的是最后一个版本,即 v4.12 并且那里没有@group
指令
在这种情况下,您基本上应该创建一个与组指令完全相同的自定义指令:)以上是关于在 lighthouse graphql 文件中声明变量的主要内容,如果未能解决你的问题,请参考以下文章
如何在lighthouse graphql laravel中获取自定义指令参数?
Laravel Lighthouse GraphQL - 在服务器端排序
Lighthouse GraphQL 将 ID 转换为字符串而不是整数?
变异中的 Laravel LightHouse GraphQL DateTime 输入始终为空