Laravel BD :: rollBack在我的代码中不起作用

时间:2019-04-16 13:24:34

标签: database laravel

我编写了以下代码,以验证将余额和历史记录保存在数据库中或不保存其中的交易。但是,当我运行代码并检查数据库时,我发现余额仍在插入银行中而不是被取消。可能是什么错误?

下面是我的余额模型负责执行操作的方法代码

public function deposit(float $value) : Array {

        DB::beginTransaction();

        $totalBefore = null;
        // $totalBefore = $this->amount ? $this->amount : 0;
        $this->amount += number_format($value, 2, ".", '');
        $deposit = $this->save();

        $historic = auth()->user()->historics()->create([
            'type'          => 'I', 
            'amount'        => $value, 
            'total_before'  => $totalBefore, 
            'total_after'   => $this->amount, 
            'date'          => date('Ymd'),
        ]);

        if ($deposit && $historic) {
            DB::commit();

            return [
                'success' => true,
                'message' => 'Sucesso ao recarregar!'
            ];
        }

        else {
            DB::rollBack();

            return [
                'success' => false,
                'message' => 'Falha ao recarregar!'
            ];
        }     
    } 

1 个答案:

答案 0 :(得分:0)

使用save()时,db :: rollBack()不会将其回滚。