gpt4 book ai didi

php - 嵌套事务在 Laravel 中是如何工作的?

转载 作者:行者123 更新时间:2023-12-04 13:41:46 26 4
gpt4 key购买 nike

我有一个主函数 A,在函数 B 之前和函数 C 之后调用。两者都保存一个模型并在函数 A 中有自己的开始事务和主事务,数据是如何存储的?

我试图在函数 C 上抛出一个异常,但函数 B 将变量 $modelB 存储在任何地方

        public function B(){
DB::beginTransaction();
try{
$modelB->save();
DB::commit();
}catch(\Exception $e){
DB::rollback();
}
}

public function C(){
DB::beginTransaction();
try{
$modelC->save();
DB::commit();
}catch(\Exception $e){
DB::rollback();
}
}

public function A(){
DB::beginTransaction();
try{
$this->B();
$this->C();
DB::commit();
} catch(\Exception $e){
DB::rollback();
}
}

最佳答案

在 Laravel 6 中,您可以使用:

DB::connection(DB::getDefaultConnection())->transactionLevel()

获取当前的事件交易号。我个人更喜欢使用单个事务,例如:
if(DB::connection(DB::getDefaultConnection())->transactionLevel()==0){
DB::beginTransaction();
}
try{
//DO SOME STUFF

if(DB::connection(DB::getDefaultConnection())->transactionLevel()==0)
{
DB::commit();
} // else, leave commit to parent transaction
}catch(\Throwable $e)
{
DB::rollback();
throw $e;
}

关于php - 嵌套事务在 Laravel 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56022393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com