Laravel Lighthouse Graphql belongsToMany 具有枢轴值的突变

Laravel Lighthouse Graphql belongsToMany mutation with pivot values

我有一些 Laravel 模型通过 belongsToMany 关系中的枢轴 table 相关。
现在我尝试在 Laravel Lighthouse 中创建一个突变以加入模型并填充枢轴值。
不知怎么的,我不知道该怎么做。

课程模型如下所示:

class Course extends Model
{
    public function programs(): BelongsToMany
    {
        return $this->belongsToMany(\App\Models\Program::class, 'Course_Program')
                    ->withPivot('id', 'year_id')
                    ->withTimestamps();
    }
}

我的 GraphQL 代码如下所示:

type Mutation {
    createCourse(input: CreateCourseInput! @spread): Course! @create
}

type Course {
    id: ID!
    name: String!
    programs: [ProgramWithPivot!]! @belongsToMany
}

type Program {
    id: ID!
    name: String!
}

type ProgramWithPivot {
    id: ID!
    name: String!
    year_id: ID!
}

input CreateCourseInput {
    name: String!
    programs: CreateCourseProgramsRelation!
}

input CreateCourseProgramsRelation {
    create: [CreateCourseProgramInput!]
}

input CreateCourseProgramInput {
    id: ID!
    year_id: ID!
}

问题是当我尝试在我的课程中创建这样的程序时:

mutation {
  createCourse(input: {
    name: "new cours"
    programs: {
      create: [{
        id: 1
        year_id: 2
      }]
    }
  }) {
    id
    programs {
      id
      year_id
    }
  }
}

Laravel Lighthouse 尝试将数据插入 Program table(并抱怨 Program.name 没有默认值)。
但是,我想将数据(course_id、year_id 和 program_id)插入 Course_Program table.

如何告诉 Laravel Lighthouse 在数据透视表中插入数据-table?

当前不存在变异数据透视表,但我上周为此做了一个 PR。你可以follow the PR progress

一般来说,它会按照我做的方式包含在内,或者可能会有点不同。这是discussed in this issue

目前您只能使用自定义 resolver/directive 更新数据透视表数据。但可能最好的方法就是等到 PR 合并。

有什么方法可以通过嵌套突变对数据透视表进行更新/更新插入?