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');
 }