Я изо всех сил пытаюсь понять, как налаживать отношения с помощью маяка. Допустим, у меня есть Post
модель, которая belongsTo
User
. В моем schema.graphql
у меня есть:
type Mutation {
createPost(input: CreatePostInput! @spread): Post! @create
}
input CreatePostInput! {
text: String!
user: BelongsToUser!
}
input BelongsToUser {
connect: ID!
}
И мой объект Post в базе данных имеет столбец внешнего ключа user_id
Когда я запускаю запрос:
mutation {
createPost(input: {
text: "Hello World",
user: {
connect: 1
}
}){
id
}
}
Я получаю сообщение об ошибке: Field 'user_id' doesn't have a default value
Мне кажется, что я делаю что-то не так, когда эта мутация не обновляет правильный столбец для отношений. Может ли кто-нибудь указать мне, что я делаю неправильно? (Если я сделаю столбец обнуляемым со значением по умолчанию в базе данных, он будет вставлен, но связь, конечно, неверна. Я также могу настроить схему graphql для использования user_id: Int
, которая работает, но кажется неправильным способом сделать вещи.)
Все работает правильно через Eloquent, и запросы graphql работают, правильно вытягивая связанные объекты.
Примечание. Согласно документации, я определили возвращаемый класс отношения в моей модели:
class Post extends Model
{
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
}
и соответствующая миграция:
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained();
$table->string('text');
...