我有一个数据透视表
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的方法。
答案 0 :(得分:2)
您可以在同步方法中添加一个布尔值,它只是添加值而不会删除现有值。
代码看起来像这样。第一个值可以是int或数组。
Product::find(1)->user()->sync([1], false);