2016-09-30 152 views
0

問題Laravel updateExistingPivot與多個主鍵

我想更新在樞軸表中的行具有2個主鍵。但updateExistingPivot只需要一個主鍵。

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

我的DB-表

  • 運動
  • 用戶
  • Campaign_user(主鍵USER_ID和CAMPAIGN_ID)

我的問題

我應該更改我的數據透視表,使其只有1個主鍵稱爲ID。或者我可以保留它與2個主鍵,並仍然更新它與雄辯?

回答

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));