在 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 输入始终为空

Laravel Lighthouse Graphql HasOne 嵌套关系不起作用

使用 Laravel Lighthouse 在 Laravel 7 中出现 CORS 错误