Laravel updateExistingPivot包含多个主键

时间:2016-09-30 21:05:26

标签: php laravel pivot-table insert-update

问题

我想更新数据透视表中包含2个主键的行。但是updateExistingPivot只需要一个主键。

$user = App\User::find(1);
$user->roles()->updateExistingPivot($roleId, $attributes);

我的数据库表

  • 广告系列
  • 用户
  • Campaign_user(主键为user_id和campaign_id)

我的问题

我应该更改我的数据透视表,以便它只有一个名为id的主键。或者我可以使用2个主键保留它,并使用Eloquent进行更新吗?

1 个答案:

答案 0 :(得分:0)

我认为最佳做法是在Campaign_user表中添加密钥ID,结构应该:

Campaign_user
 id|user_id|campaign_id

在用户模型中

public function campaign()
{
    return $this->belongsToMany('Campaign', 'Campaign_user','user_id','campaign_id')->withPivot('extra attribute if any');
}

在广告系列模型中

public function users()
{
    return $this->belongsToMany('User', 'Campaign_user','campaign_id','user_id')->withPivot('extra attribute if any');
}

现在你的代码是:

$user = App\User::find($userId);
$user->campaign()->updateExistingPivot($campaignId, array('any attribute'=>$value));