Как обновить сводную таблицу на laravel?

Я использую laravel 5.3

У меня 3 таблицы: таблица продукта, таблица категории и таблица products_categories

table product: id, name и т. д.

категория таблицы: идентификатор, имя и т. д.

table products_categories: id, product_id, category_id

В модельном продукте у меня есть метод:

public function categories() { return $this->belongsToMany(Category::class, 'products_categories', 'product_id', 'category_id') ->withPivot('id') ->withTimestamps(); } 

Таким образом, у одного продукта есть много категорий

Мой код вроде этого

Например $ param ['category'], например:

Массив (['category1'] => 4 ['category2'] => 11 ['category3'] => 18)

$ product_id = 1

 foreach ($param['category'] as $category) { Product::find($product_id) ->categories() ->attach( $category, [] ); } 

Он использовал для добавления категории на сводную таблицу, и она работает

Но если я обновляю категорию на сводной таблице, она не работает

Я пробую вот так:

Например, ранее отредактированная категория

$ param ['category'] =

Массив (['category1'] => 5 ['category2'] => 12 ['category3'] => 19)

$ product_id = 1

И код для обновления данных в сводной таблице:

 foreach ($param['category'] as $category) { Product::find($product_id) ->categories() ->wherePivot('product_id', $product_id) ->updateExistingPivot($category, ['category_id' => $category]); } 

Он не обновил категорию поля успешно

Как я могу это решить?

    Попробуйте использовать функцию sync()

     Product::find($product_id)->categories()->sync($array_of_categories_id)