事務(wù)是把一系列數(shù)據(jù)庫操作當(dāng)作一個(gè)邏輯單元執(zhí)行,也就是說,事務(wù)中的一系列 SQL 語句要么都執(zhí)行成功,要么都失敗,事務(wù)的原子性能保證數(shù)據(jù)的一致性、安全性和持久性。
PDO 擴(kuò)展中使用事務(wù)很容易,只需把想要執(zhí)行的 SQL 語句放在 PDO 實(shí)例的beginTransaction()方法和commit()方法之間即可。
在 Laravel 框架中對事務(wù)操作進(jìn)行了封裝,我們可以這樣調(diào)用:
DB::transaction(function () {
DB::table('users')->update(['votes' => 1]);
DB::table('posts')->delete();
}, 5);
相應(yīng)的底層位于ManagesTransactionstrait 中:

還可以這樣調(diào)用:
DB::beginTransaction();
try {
DB::table('users')->update(['votes' => 1]);
DB::table('posts')->delete();
DB::commit();
} catch (PDOException $ex) {
var_dump($ex);
DB::rollback();
}
相應(yīng)的底層實(shí)現(xiàn)同樣位于ManagesTransactions,可自行查看。
原文:http://laravelacademy.org/post/7448.html