Я изо всех сил пытаюсь понять, как создать отношения через маяк. Допустим, у меня есть модель Post
, которая belongsTo
a 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');
...