Возникли проблемы в магазине метод Laravel - красноречивый - PullRequest
0 голосов
/ 01 апреля 2020

Занимался этим очень долго, и я не могу понять это правильно. Был бы очень благодарен за помощь. Заранее спасибо! Я пытаюсь создать небольшой клон Reddit для обучения.

Я думаю, что эти модели подходят для того, что я пытаюсь сделать. Я могу сохранить Subreddit в БД с user_id. Но моя проблема в том, что я не могу публиковать сообщения в таблице сообщений, так как она говорит мне, что не может найти столбец subreddits_id. Мне кажется, что метод, который я пытаюсь вызвать, должен работать, но это не так.

protected $fillable = ['title', 'link','content', 'post_picture', 'user_id', 'subreddit_id'];


//Functions

public function user () {
    return $this->belongsTo(User::class);
}

public function subreddit() {
    return $this->belongsTo(Subreddit::class);
}

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

Выше моя модель Post

protected $guarded = [];

//Functions

public function user () {
    return $this->belongsTo(User::class);
}

public function posts () {
    return $this->hasMany(Post::class);
}

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

Выше моя модель Subreddit

public function posts () {
    return $this->hasMany(Post::class);
}

public function subreddit() {
    return $this->hasMany(Subreddit::class);
}

public function commments () {
    return $this->hasMany(Comment::class);
}

Над моей моделью пользователя

Я думаю, что эти модели подходят для того, что я пытаюсь сделать. Я могу сохранить Subreddit в БД с user_id. Но моя проблема в том, что я не могу публиковать сообщения в таблице сообщений, так как она говорит мне, что не может найти столбец subreddits_id. Мне кажется, что метод, который я пытаюсь вызвать, должен работать, но это не так.

Метод Store выглядит следующим образом:

public function store(Request $request)
{ $data = request()->validate([
        'title' => 'required',
        'link' => 'required',
        'content' => 'required',
    ]);


    $post = auth()->user()->posts()->create($data);
return redirect('/home');

}

Я получаю эту ошибку Общая ошибка: 1364 Field ' subreddit_id 'не имеет значения по умолчанию (SQL: вставить в значения posts (title, link, content, user_id, updated_at, created_at) (трепет, ew, мы, 2, 2020-04-01 17:41:29, 2020-04-01 17:41:29))

1 Ответ

0 голосов
/ 01 апреля 2020

ваш $data принимает только те параметры, которые вы указали для проверки, но вы не включили subreddit_id, Это должно быть так:

public function store(Request $request)
{ $data = request()->validate([
    'title' => 'required',
    'link' => 'required',
    'content' => 'required',
    'subreddit_id' => 'required|exist:subreddits,id'
]);


$post = auth()->user()->posts()->create($data);
return redirect('/home');

}
...