我有两种模式:
用户和 的资源
关系表是 resource_user 。
resource_user中的字段是:
id | resource_id | user_id | another_id
我在用户中有这种关系:
public function resources() {
return $this->belongsToMany('Resource')->withPivot(array(
'value',
'another_id',
));
}
现在我要更新我的数据透视表:
(在模型用户中有这个代码示例)
$this->resources()->whereAnotherId(1)->updateExistingPivot($resource_id, array(
'value' => $value,
'updated_at' => new DateTime,
));
问题是another_id。
如果我的关系表中有两个条目(resource_user) 但是不同 another_id&#39。在此示例中,laravel将更新BOTH条目。但这不是我想要的。 在此示例中,只应更新一个条目(具有another_id = 1的条目)。 这是一个错误,或者我如何更新我的数据透视表(sync()函数不能在这里使用我的表设置)..
答案 0 :(得分:6)
请尝试使用wherePivot()
。使用whereAnotherId(1)
,您定位的是Resource
的表,而不是数据透视表......
$this->resources()->wherePivot('another_id', 1)
->updateExistingPivot($resource_id, array(
'value' => $value,
'updated_at' => new DateTime,
));