更新数据透视表

时间:2015-05-29 15:24:57

标签: laravel laravel-4 eloquent laravel-5

我有一个数据透视表

id | product_id | user_id

我希望更新此数据透视表,我这样做:

Product::find($productId)->attach($userId);

这会产生类似

的东西
id | product_id | user_id
 1        1          1

但是当我再次这样做时,如果值已经存在,我不想更新数据透视表。

上述附加方法可以执行以下操作:

id | product_id | user_id
 1        1          1
 1        1          1

我知道你可以使用同步,但这会从表中删除所有内容,我不希望这样做。我也知道你可以使用:

Product::find(1)->user()->updateExistingPivot(1, []);

但这只适用于数据在表格中的情况。

我正在寻找的是在数据透视表上进行firstOrCreate的方法。

1 个答案:

答案 0 :(得分:2)

您可以在同步方法中添加一个布尔值,它只是添加值而不会删除现有值。

代码看起来像这样。第一个值可以是int或数组。

Product::find(1)->user()->sync([1], false);