Come posso aggiornare la tabella pivot su laravel?

Io uso laravel 5.3

Ho 3 tavoli: prodotti da table, categoria da tavolo e prodotti da table_categorie

prodotto da table: id, nome, ecc

categoria della tabella: id, nome, ecc

tabella products_categories: id, product_id, category_id

Nel prodotto di model, ho il metodo questo:

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

Quindi 1 prodotto ha molte categorie

Il mio codice come questo

Ad esempio $ param ['categoria'] come questo:

Array (['category1'] => 4 ['category2'] => 11 ['category3'] => 18)

$ product_id = 1

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

Ha usato per aggiungere una categoria sulla tabella pivot e funziona

Ma se aggiorno la categoria sulla tabella pivot, non funziona

Provo così:

Ad esempio la categoria precedentemente modificata in questo modo

$ param ['category'] =

Array (['category1'] => 5 ['category2'] => 12 ['category3'] => 19)

$ product_id = 1

E il codice per aggiornare i dati sulla tabella pivot in questo modo:

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

Non ha aggiornato la categoria di field con successo

Come posso risolverlo?

Prova ad usare la function sync()

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