$categories_data = (!is_array($data['categories'])) ? json_decode($data['categories']) : $data['categories'];
if (is_array($categories_data) && count($categories_data)) {
$cd = collect($categories_data);
$cd->forget('pivot');
$cd->each(
function ($category) use ($product) {
if (!$product->categories()->where('id', $id)->count()) {
$modelCategory = Category::where('id', $id)->first();
if (!$modelCategory) {
$modelCategory = Category::create($category->toArray());
}
$product->categories()->attach($modelCategory->id);
}
}
);
}