хранение данных в laravel

Я пытаюсь сохранить следующие входящие данные в БД, и они успешно сохранены, кроме одной вещи.

Как я печатаю: $request->user()->posts()->save($answer); , все сохраняется нормально, кроме post_id,
И если я заменю его на: $post->answers()->save($answer); , все сохраняется нормально, кроме user_id,
Как мне отредактировать метод save (), чтобы сохранить оба?

Код от контроллера:

public function postAnswer(Request $request, $post_id)
{$post = Post::where('id', $post_id)->first();
$body = $request['body'];
$pros = $request['pros'];
$cons = $request['cons'];

$answer = new Answer();
$answer->body = $body;
$answer->pros = $pros;
$answer->cons = $cons;$post->answers()->save($answer);

0

Решение

Вы пытаетесь сохранить два отношения одновременно. AFAIK, это не сработает.

Сначала вам нужно сохранить сообщение для пользователя, а затем сохранить ответ в сообщении.

$request->user()->posts()->save($post);
$post->answers()->save($answer);

ОБНОВИТЬ

ОП нуждается в user_id сохранены в answers стол, поэтому нам нужно сохранить эти отношения, а также. С двумя строками кода выше, $answer ничего не знает о пользователе, только родитель $post — поэтому мы должны явно сказать $answer что оно принадлежит user:

$request->user()->answers()->save($answer);
1

Другие решения

Возможно, вам придется добавить это к вашим моделям:

Post.php:

protected $fillable = [
...
'post_id',
...
];

Или необходимые поля, удачи.

0