我正在使用Laravel 5.2。
我想知道之间有什么区别:
DB::beginTransaction()
和DB::transaction()
DB::commitTransction()
和DB::commit()
DB::rollbackTransction()
和DB::rollback()
任何帮助都将不胜感激。
答案 0 :(得分:10)
DB::beginTransaction()
只会开始一个事务,而对于DB::transaction()
,您必须传递一个Closure函数,该函数将在事务中执行。
所以这个:
DB::transaction(function() {
// Do something and save to the db...
});
与此相同:
// 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;
}
正如您所看到的,DB::transaction()
是一个“帮助器”函数,可以避免编写代码来捕获错误,开始事务,提交事务,以及如果发生错误,还可以选择回滚(取消事务)。 p>
如果您有更复杂的逻辑或需要特定的行为,您将手动构建您的交易;如果你的逻辑很简单,DB::transaction()
就是你要走的路。
对于DB::commitTransaction()
和DB::rollbackTransaction()
,我找不到相关信息。
检查所用内容的源代码是一种很好的做法,因为您将了解它们的编写方式以及如何编写。 Here's the file以及这些方法的来源。