通过DB可以操作事务,有两种事务模式,一种是自动事务,事务内出现问题自动回滚,另一种是手动操作事务,可以根据具体的问题手动提交或回滚
自动事务操作
use Exception;
try {
DB::transaction(function () {
DB::table('my_demo_examples')->where('Age', '>', 28)->delete();
});
} catch (Exception $e) {
// ...
}
// transaction 外的参数在 function 内是使用不了的,例如下面的 $name,需要通过 use ($name) 来引入,如下:
$name = 'Gary';
DB::transaction(function () use ($name) {
DB::table('my_demo_examples')->where('Name', $name)->delete();
});
手动事务操作
use Exception;
DB::beginTransaction();
$transactionLevel = DB::transactionLevel(); // 获取事务等级
if ($transactionLevel > 0) { // 如果事务等级大于 0,代表事务开启成功
try {
$affected = DB::table('my_demo_examples')
->where('Id', 1)
->update(['Age' => 16]);
if ($affected <= 0) {
throw new Exception('update failed'); // 如果更新失败,抛出异常
}
DB::commit();
} catch (Exception $e) {
DB::rollBack();
}
} else {
// start transaction failed
}
本文介绍了Laravel 8中如何进行数据库事务操作,包括自动事务和手动事务的使用。自动事务在发生错误时会自动回滚,而手动事务则允许开发者根据需求决定何时提交或回滚。

2674

被折叠的 条评论
为什么被折叠?



