我有一些我想要提交给数据库的表单。但是到目前为止我的代码是雄辩的orm
$user->password = bcrypt($newPassword);
$user->save()
我想将更新,删除或创建数据库的所有代码转换为使用数据库事务。这样做
\DB::beginTransaction();
$user->password = bcrypt($newPassword);
$user->save()
\DB::commit();
足以让我进行交易吗?。
答案 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
});
如果在闭包内抛出异常,它将自动回滚。