Вложенные мутации не работают в Lighthouse 3.7

Я пытаюсь настроить схему в Lighthouse 3.7/Laravel 5.8. Я хочу достичь следующего: пользователь должен иметь возможность создавать списки. Между пользователем и Clist существует связь "один ко многим". И я пытаюсь реализовать вложенные мутации, как описано здесь.

Я уже реализовал часть запроса, и она отлично работает. Но когда я тестирую мутацию create Clist в GraphQL Playground, я получаю эту ошибку:

"debugMessage": "Array to string conversion",

"message": "Internal server error",

"extensions": {
        "category": "internal"
      },
...

И я не могу понять, что я делаю неправильно.

Вот мой код:

type Mutation {
  createClist(input: CreateClistInput! @spread): Clist @create
}

input CreateClistInput {
    name: String!
    description: String
    starred: Boolean
    user: CreateUserRelation!
    ctags: CreateCtagRelation
}

input CreateUserRelation {
  connect: ID!
}

input CreateCtagRelation {
  create: [CreateCtagInput!]
  connect: [ID!]
  sync: [ID!]
}

input CreateCtagInput {
  name: String!
}


И вот скриншот GraphQL Playground:

1 ответ

Решение

При использовании @spread директива требуется указание на отношения в вашей модели.

Взято из документов следующий пример:

use Illuminate\Database\Eloquent\Relations\BelongsTo;

class Post extends Model 
{
    // WORKS
    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class);
    }

    // DOES NOT WORK
    public function comments()
    {
        return $this->hasMany(Comment::class);        
    }
}

Lighthouse использует подсказку типа, чтобы определить, как он должен обрабатывать отношения.

Другие вопросы по тегам