Laravel Lighthouse GraphQL 创建突变而不 "input:"

Laravel Lighthouse GraphQL create mutation without "input:"

我正在查看 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 抱怨:"Field createTask argument input of type CreateTaskInput is required but not provided"

现在我尝试将架构更改为:

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

但是随后服务器给出了一个ParseException

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

如果你想在没有 input 的情况下编写一个 mutation,还要省略 @spread 指令。所以:

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

但我认为将它放在 input 中是 "best practices"。当然你可以做任何你想做的事情。