Como posso usar a transação db no laravel?

Eu tento isso:

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()];
    }
}

Se o código executado,$this->product_repository->delete($id) não funciona / não foi possível excluir com êxito.

Mas isso :$product->categories()->detach();, funciona / sucesso excluído.

Como se a exclusão do produto falhou, a exclusão da categoria também falhou?

questionAnswers(2)

yourAnswerToTheQuestion