自动模式
自动模式直接在闭包函数里写业务逻辑,如果执行出去laravel会抛出异常,会自动进行回滚
DB::transaction(function () {
DB::table('test')->where('id',6)->update(['age' => 27]);
DB::table('users')->delete(4); //如果这里删除一个不存在的用户返回0,也会正常提交,不明白为什么?
});
手动模式
DB::beginTransaction(); //手动开启事务
try {
$r1 = DB::table('test')->where('id',6)->update(['age' => date('His')]);
// DB::table('users')->delete(6);
$r2 = DB::table('users')->where('id',15)->update(['name' => 'ABC']);
DB::commit();
} catch (\Exception $e) {
echo $e->getMessage();
DB::rollBack();
}