在laravel的雄辩中使用交易

时间:2017-05-19 12:36:15

标签: laravel laravel-5

我有一些我想要提交给数据库的表单。但是到目前为止我的代码是雄辩的orm

$user->password = bcrypt($newPassword); 
$user->save()

我想将更新,删除或创建数据库的所有代码转换为使用数据库事务。这样做

\DB::beginTransaction();
 $user->password = bcrypt($newPassword); 
 $user->save()
\DB::commit();

足以让我进行交易吗?。

2 个答案:

答案 0 :(得分:0)

是的,只需添加try catch,或者您可以使用自动方式:

DB::transaction(function ($user) {
   $user->password = bcrypt($newPassword); 
   $user->save()
});

编辑: 手动编写交易的最佳做法:

try {
   \DB::beginTransaction();
   $user->password = bcrypt($newPassword); 
   $user->save()
   \DB::commit();
}catch(\Exception $e){
   \DB::rollback();
}

答案 1 :(得分:0)

正如您在official documentation中找到的那样:

DB::transaction(function () {
    //Operations on db
});

如果在闭包内抛出异常,它将自动回滚。