带有多个主键的Laravel updateExistingPivot [英] Laravel updateExistingPivot with multiple primary keys
本文介绍了带有多个主键的Laravel updateExistingPivot的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问题
我想更新数据透视表中具有2个主键的行.但是updateExistingPivot只需要一个主键.
I want to update a row in a pivot table that have 2 primary keys. But updateExistingPivot want only a single primary key.
$user = App\User::find(1);
$user->roles()->updateExistingPivot($roleId, $attributes);
我的数据库表
- 广告系列
- 用户
- Campaign_user(主键是user_id和campaign_id)
我的问题
我应该更改数据透视表,使其只有1个名为id的主键.还是我可以用2个主键保留它,并且仍然用Eloquent更新它?
Should I change my pivot table so it only have 1 primary key called id. Or can I keep it with 2 primary keys, and still update it, with Eloquent?
推荐答案
我认为,为了最佳实践,您应该在Campaign_user表中添加键ID,结构应为:
I think for best practice you should add a key id in your Campaign_user table, structure should:
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));
这篇关于带有多个主键的Laravel updateExistingPivot的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文