Вы можете использовать это так:

аюсь это:

public function destroy($id)
{
    DB::beginTransaction();
    try {
        $product = $this->product_repository->find($id);
        $result = $product->categories()->detach();
        if($result) {
            list($status,$instance) = $this->product_repository->delete($id);
        }
        DB::commit();
        return ['status'=>true,'data'=>$status];
    } catch (\Exception $e) {
        DB::rollback();
        return ['status'=>false, 'message'=>$e->getMessage()];
    }
}

Если код выполнен,$this->product_repository->delete($id) не работает / не удаляется.

Но это :$product->categories()->detach();, это работает / успех удален.

Как, если удалить продукт не удалось, удалить категорию также не удалось?

Ответы на вопрос(1)

Ваш ответ на вопрос