Вложенные мутации не работают в 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 использует подсказку типа, чтобы определить, как он должен обрабатывать отношения.