Ham*_*ava 1 php mysql transactions laravel laravel-5.2
我正在使用Laravel 5.2.
我想知道之间有什么区别:
DB::beginTransaction() 和 DB::transaction()DB::commitTransction() 和 DB::commit()DB::rollbackTransction() 和 DB::rollback()任何帮助将不胜感激.
Par*_*hal 11
DB::beginTransaction()只会开始一个事务,而DB::transaction()你必须传递一个将在事务中执行的Closure函数.
所以这:
DB::transaction(function() {
// Do something and save to the db...
});
Run Code Online (Sandbox Code Playgroud)
与此相同:
// Open a try/catch block
try {
// Begin a transaction
DB::beginTransaction();
// Do something and save to the db...
// Commit the transaction
DB::commit();
} catch (\Exception $e) {
// An error occured; cancel the transaction...
DB::rollback();
// and throw the error again.
throw $e;
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,DB::transaction()是一个"帮助器"函数,可以避免编写代码来捕获错误,开始事务,提交事务,以及在发生错误时可选地回滚(取消事务).
如果您有更复杂的逻辑或需要特定的行为,您将手动构建您的交易; 如果你的逻辑很简单,那DB::transaction()就是要走的路.
至于DB::commitTransaction()和DB::rollbackTransaction(),我找不到信息.
检查所用内容的源代码是一种很好的做法,因为您将了解它们的编写方式以及如何编写.这是包含这些方法的源文件.
| 归档时间: |
|
| 查看次数: |
6308 次 |
| 最近记录: |