2015-05-29 3 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

Смежные вопросы