事务是把一系列数据库操作当作一个逻辑单元执行,也就是说,事务中的一系列 SQL 语句要么都执行成功,要么都失败,事务的原子性能保证数据的一致性、安全性和持久性。
PDO 扩展中使用事务很容易,只需把想要执行的 SQL 语句放在 PDO 实例的beginTransaction()方法和commit()方法之间即可。
在 Laravel 框架中对事务操作进行了封装,我们可以这样调用:
DB::transaction(function () {
DB::table('users')->update(['votes' => 1]);
DB::table('posts')->delete();
}, 5);
相应的底层位于ManagesTransactionstrait 中:
还可以这样调用:
DB::beginTransaction();
try {
DB::table('users')->update(['votes' => 1]);
DB::table('posts')->delete();
DB::commit();
} catch (PDOException $ex) {
var_dump($ex);
DB::rollback();
}
相应的底层实现同样位于ManagesTransactions,可自行查看。
原文:http://laravelacademy.org/post/7448.html
网友评论