【发布时间】:2019-05-07 12:12:53
【问题描述】:
我有一个主函数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();
}
}
【问题讨论】:
-
您必须重新抛出异常,以便它们被 A 捕获。
-
应该是:DB::beginTransaction() 函数A; DB::beginTransaction();功能B; $modelB->保存(); DB::commit() 函数 B; DB::beginTransaction() 函数 C;抛出异常函数 C; DB::rollback() 函数 C; DB::rollback() 函数 A;正确的?变量 $modelB 它的行为如何?保存了吗?
标签: php mysql laravel transactions