【发布时间】:2017-05-25 20:37:19
【问题描述】:
我在进行多次查询时尝试进行数据库事务。
我也试图捕捉事务之外的异常,就像
DB::transaction(function() {
try{
//....db queries
}catch(\Exception $e){
Log::info($e);
}
});
当这里抛出一些异常时,事务似乎没有回滚,数据库中的数据已经改变。
如果我在 catch 语句中手动执行DB::rollBack(),我的所有数据都会正常,
这让我想我是否必须手动执行DB::rollBack()?
但我记得 Laravel 的文档说如果我使用DB::transaction 管理我的数据库查询,当抛出异常时,DB::rollBack() 将自动执行?
在 Laravel 5.3 中改变了吗?
【问题讨论】:
-
还显示您的正确代码以使您的问题更清楚
-
@msonowal 我只想讨论 DB::transaction 的逻辑,而不是确切的代码。如果你知道 Laravel,就很容易理解我在说什么,所以我认为我不必输入这么多代码来明确我的观点。