Я использую 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)