Laravel Lighthouse Graphql принадлежит мутации ToMany со значениями разворота - PullRequest
0 голосов
/ 07 января 2020

У меня есть несколько 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 для вставить данные в сводную таблицу?

Ответы [ 2 ]

1 голос
/ 07 января 2020

Мутирующих сводных данных в настоящее время нет, но я сделал пиар для этой недели. Вы можете следить за ходом PR

В общем, оно будет включено либо так, как я это сделал, либо, может быть, немного по-другому. В этом выпуске обсуждалось

На данный момент вы можете обновлять свои сводные данные только с помощью специального преобразователя / директивы. Но, вероятно, лучший способ будет просто подождать, пока PR слится.

0 голосов
/ 31 января 2020

Есть ли способ выполнить обновление / вставку для поворота данных через вложенную мутацию?

...