web-dev-qa-db-ja.com

LighthouseのGraphQLファイルで変数を宣言する

私はこのような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のような変数を宣言して、大きなモデルの名前空間の代わりに使用できるかどうか疑問に思っていました。

6
Alireza A2F

編集:

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

1
TonyPepperoni