Laravel Lighthouse GraphQL创建没有“输入”的突变:

时间:2020-01-25 11:26:03

标签: laravel graphql laravel-lighthouse

我正在寻找Laravel Lighthouse的文档,并且看到两种类型的突变。

mutation {
  createPost(input: { # <-- the "input:" I'm talking about
    title: "My new Post"
    author: {
      connect: 123
    }
  }){
    id
    author {
      name
    }
  }
}

另一个没有input: (found here)

的突变
mutation CreateTaskWithNotes {
  createTask( # <-- no "input:" here
    id: 45
    name: "Do something"
    notes: [
      {
        content: "Foo bar",
        link: "http://foo.bar"
      },
      {
        content: "Awesome note"
      }
    ]
  ) {
    id
  }
}

我的问题是:在没有input:的情况下如何获得突变?

我尝试从文档中复制(修改)示例。但是,如果我写这样的变异:

type Mutation {
    createTask(input: CreateTaskInput! @spread): Task! @create
}

当我尝试省略input:时,graphql-playground抱怨:“必须输入类型为 CreateTaskInput 的字段 createTask 自变量 input 但未提供”

现在,我尝试将模式更改为此:

type Mutation {
    createTask(CreateTaskInput! @spread): Task! @create
}

但是随后服务器给出了ParseException

我确实更喜欢不带input:的语法,因为它的重复性要低得多。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

如果您要编写不带input的变体,也请省略@spread指令。所以:

type Mutation {
    createTask(
        id: ID
        name: String
    ): Task! @create
}

但是我认为将其包含在input中是“最佳实践”。当然,您可以做任何想做的事。