Создание двух отношений из одного и того же метода контроллера в laravel - PullRequest
1 голос
/ 08 апреля 2020

Я пытаюсь разрешить пользователям публиковать фотографии и комментировать фотографии. Изображения связаны с пользователями посредством отношения один ко многим, а комментарии связаны с изображениями посредством отношения один ко многим. Теперь я пытаюсь одновременно связать пользователей и изображения с комментариями, когда бы они ни были сделаны. В настоящее время я могу связать комментарии либо с изображением, либо с пользователем, но не с обоими.

Ниже приведен метод контроллера, который обрабатывает загрузку комментариев:

public function postComment(Request $request, $picture_id)
{
    $this->validate($request, [
        "comment" => ['required', 'max:1000'],
    ]);

    $picture = Picture::find($picture_id);

    $picture->status()->create([
        'body' => $request->input('comment'), 
    ]);

    Auth::user()->statuses()->update([
        'body' => $request->input('comment'),
    ]);

    return redirect()->back();

}

Я попытался создать одну связь, а затем создать другую, используя update (). Это не сработало и привело к тому, что значение осталось нулевым.

Спасибо за помощь.

1 Ответ

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

Если я правильно понимаю модель вашей базы данных, при создании модели состояния для вашей фотографии все, что вам нужно сделать, это также включить идентификатор пользователя, например, так:

public function postComment(Request $request, $picture_id)
{
    $this->validate($request, [
        "comment" => ['required', 'max:1000'],
    ]);

    $picture = Picture::find($picture_id);

    $picture->status()->create([
        'body' => $request->input('comment'), 
        'user_id' => Auth::id()
    ]);

    return redirect()->back();

}

Также обязательно добавьте user_id к свойству $ fillable в модели Status, чтобы позволить ему быть назначенным через метод создания

protected $fillable = [
    'body', 'user_id',
  ];

Это должно связать только что созданный вами статус с рисунком и классом пользователя. Затем вы можете получить его в другом месте, например, Auth::user()->statuses

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...