作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有两个模型:
用户 和资源
关系表是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 的。在此示例中,laravel 将更新两个条目。但这不是我想要的。在此示例中,仅应更新一个条目(another_id = 1 的条目)。这是一个错误,还是我如何更新我的数据透视表(sync() 函数不适用于我在此处设置的表)。
最佳答案
尝试使用 wherePivot()
代替。使用 whereAnotherId(1)
您的目标是 Resource
表而不是数据透视表...
$this->resources()->wherePivot('another_id', 1)
->updateExistingPivot($resource_id, array(
'value' => $value,
'updated_at' => new DateTime,
));
关于php - 带有where子句的laravel 4 updateExistingPivot不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29169606/
为了更新数据透视表中的单个记录,我使用 updateExistingPivot 方法。但是它以 $id 作为第一个参数。例如: $step->contacts()->updateExistingPiv
事情是这样的,我有 3 个表,users/users_types/types。 我通过 users_types 在用户和类型之间有一个 belongToMany,其中包含一些信息的枢轴。其中之一是表格
我是一名优秀的程序员,十分优秀!