Laravel Eloquent ORM Transactions

2022-08-30 07:12:04

Eloquent ORM非常好,尽管我想知道是否有一种简单的方法可以使用innoDB以与PDO相同的方式设置MySQL事务,或者我是否必须扩展ORM才能实现这一目标?


答案 1

您可以执行以下操作:

DB::transaction(function() {
      //
});

闭包内的所有内容都在事务中执行。如果发生异常,它将自动回滚。


答案 2

如果您不喜欢匿名函数:

try {
    DB::connection()->pdo->beginTransaction();
    // database queries here
    DB::connection()->pdo->commit();
} catch (\PDOException $e) {
    // Woopsy
    DB::connection()->pdo->rollBack();
}

更新:对于 laravel 4,该对象不再是公共的,因此:pdo

try {
    DB::beginTransaction();
    // database queries here
    DB::commit();
} catch (\PDOException $e) {
    // Woopsy
    DB::rollBack();
}

推荐