通过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')