2015-05-29 96 views
0

我有一個數據透視表更新數據透視表

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的方法。

回答

2

您可以爲您的同步方法添加一個布爾值,該方法只添加該值並且不會刪除現有值。

代碼如下所示。第一個值可以是int或數組。

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

感謝您的幫助! – panthro