问题
我想更新数据透视表中包含2个主键的行。但是updateExistingPivot只需要一个主键。
$user = App\User::find(1);
$user->roles()->updateExistingPivot($roleId, $attributes);
我的数据库表
我的问题
我应该更改我的数据透视表,以便它只有一个名为id的主键。或者我可以使用2个主键保留它,并使用Eloquent进行更新吗?
答案 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));