从laravel中的同一控制器方法创建两个关系

从laravel中的同一控制器方法创建两个关系,laravel,eloquent,Laravel,Eloquent,我正在尝试允许用户发布图片和评论图片。图片通过一对多关系与用户相关,评论通过一对多关系与图片相关。我现在试图在每次发表评论时同时将用户和图片与评论联系起来。目前,我可以将评论与图片或用户关联,但不能同时与两者关联 以下是处理注释上载的控制器方法: public function postComment(Request $request, $picture_id) { $this->validate($request, [ "comment" => ['requ

我正在尝试允许用户发布图片和评论图片。图片通过一对多关系与用户相关,评论通过一对多关系与图片相关。我现在试图在每次发表评论时同时将用户和图片与评论联系起来。目前,我可以将评论与图片或用户关联,但不能同时与两者关联

以下是处理注释上载的控制器方法:

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()创建另一个关系。这不起作用,导致值保持为null


谢谢您的帮助。

如果我正确理解了您的数据库模型,那么在为图片创建状态模型时,您需要做的就是还包括用户id,如下所示:

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添加到
Status
模型中的$filleble属性中,以允许通过create方法分配它

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

这应该将刚刚创建的状态链接到picture和user类。然后,如果我正确理解了您的数据库模型,您可以在其他地方使用类似于
Auth::user()->statuses

的方法检索它,在为图片创建状态模型时,您需要做的就是还包括用户id,如下所示:

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添加到
Status
模型中的$filleble属性中,以允许通过create方法分配它

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

这应该将刚刚创建的状态链接到picture和user类。然后,您可以在其他地方使用类似于
Auth::user()->statuses

statuses在我的用户模型中的一部分公共函数statuses(){return$this->hasMany('App\Status','user_id');}的内容检索它状态是我图片模型的一部分:公共函数status(){return$this->hasMany('App\status','picture_id');}我尝试了你建议的代码;但是,用户id字段仍然为空。您能告诉我
dd(Auth::id())
返回什么吗?您是否已将
'user\u id
'添加到
Status
类中的$filleble属性中(或从
$guarded
数组中删除)?状态是我的用户模型公共函数Status()的一部分({return$this->hasMany App\Status',user\u id');}状态是我图片模型的一部分:公共函数status(){return$this->hasMany('App\status','picture_id');}我尝试了你建议的代码;但是,用户id字段仍然为空。您能告诉我
dd(Auth::id())
返回什么吗?您是否已将
'user\u id
'添加到
Status
类中的$filleble属性中(或从
$guarded
数组中删除)?