php DB::事务未按laravel中的预期运行

nfeuvbwi  于 2023-03-16  发布在  PHP
关注(0)|答案(1)|浏览(121)

我有几个SQL查询,我必须绑定在事务中,以便如果任何一个查询失败,它将转到初始化,所以我只是这样做,这里是代码。

DB::beginTransaction();

        try {
            //update loan application
            $loanApplication->status = 'DISBURSED';
            $loanApplication->tenure = $offerDetails['tenure'];
            $loanApplication->amount_offered = $offerDetails['loanAmount'];

            $isUpdated = $loanApplication->update();

            //create loan disbursal
            LoanDisbursal::insertGetId([
                'created_dt' => Carbon::now(),
                'user_id' => $loanApplication->user_id,
                'loan_account' => $loanApplication->application_id,
            ]);

            //create loan profile account
            ProfilesHasAccount::insertGetId([
                'user_id' => $loanApplication->user_id,
                'gateway' => $this->gatewayAlias,
                'account_segment' => 'BUSINESS',
                'account_type' => 'LOAN',
                'created_dt' => Carbon::now(),
                'status' => 'ACTIVE',
            ]);

        } catch (\Throwable $th) {
            dd(DB::rollback());
            dd($th);
        }

        DB::commit();

现在,根据事务,如果任何一个查询失败,它必须回滚所有已完成的SQL操作,但它不在这里发生
任何想法或建议,将非常有帮助

q3qa4bjr

q3qa4bjr1#

好吧,我找到了答案,问题是我的项目包含多个数据库,所以我只需要像这样显示事务上的连接

DB::connection('ipay_app_loans__write')->beginTransaction();

DB::connection('ipay_app_loans__write')->rollBack();

DB::connection('ipay_app_loans__write')->commit();

就是这样!

相关问题