У меня есть несколько Laravel моделей, которые связаны через сводную таблицу в отношении ownToMany.
Теперь я пытаюсь создать мутацию в 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 (и жалуется, что Program.name делает не имеет значения по умолчанию).
Однако я хочу вставить данные (course_id, year_id и program_id) в таблицу Course_Program .
Как мне указать Laravel Lighthouse для вставить данные в сводную таблицу?