【问题标题】:Laravel updateExistingPivot with multiple primary keysLaravel updateExistingPivot 具有多个主键
【发布时间】:2017-02-09 12:54:37
【问题描述】:
问题
我想更新具有 2 个主键的数据透视表中的一行。但是 updateExistingPivot 只需要一个主键。
$user = App\User::find(1);
$user->roles()->updateExistingPivot($roleId, $attributes);
我的数据库表
- 广告系列
- 用户
- Campaign_user(主键是 user_id 和 campaign_id)
我的问题
我是否应该更改我的数据透视表,使其只有 1 个名为 id 的主键。或者我可以使用 2 个主键保留它,并且仍然使用 Eloquent 更新它吗?
【问题讨论】:
标签:
php
laravel
pivot-table
insert-update
【解决方案1】:
我认为作为最佳实践,您应该在 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));