如何将数据添加到laravel中的数据透视表中的其他列

时间:2016-12-03 16:16:18

标签: laravel eloquent laravel-5.3

我试图在Laravel 5.3中构建应用程序,我想在数据透视表中添加其他列数据。以下是我的代码:

我的Users型号:

public function relations()
{
  return $this->belongsToMany('App\Plan')->withPivot('child');
}

我的Plan型号:

public function relations()
{
  return $this->belongsToMany('App\User')->withPivot('child');
}

在我的控制器中,我从Auth::user();获取用户数据,以及计划和子元素我通过请求获取。我想将它存储到我的数据透视表中。以下是我在控制器中尝试的代码:

$user = \Auth::user();
$plan_id = $request->plan_id;
$childid = $request->child_id;
$plan = App\Plan::find($plan_id);
$user->relations()->attach($plan, ['child' => $childid]);

帮助我解决这个问题。

3 个答案:

答案 0 :(得分:5)

你应该像这样使用attach()

$user->relations()->attach($plan_id, ['child' => $childid]);

答案 1 :(得分:2)

尝试使用save方法:

$user->relations()->save($plan, ['child' => $childid]);

Docs

答案 2 :(得分:0)

saveattach都有效。只是attach将返回null,而save将在我尝试使用修补程序时返回$ user对象