public function update(UpdateProductCategoriesRequest $request, Product $product, CategoryRepository $categoryRepository) { $categories = $request->input('categories') ?: []; if ($categories) { $categoryInstances = $categoryRepository->whereIn('id', $categories)->findAll(); foreach ($categoryInstances as $category) { if (!$category->isLeaf()) { throw new InvalidDataException(); } } } $product->categories()->sync($categories); return $this->success('edit'); }