我正在一个应用程序上运行 Laravel 7.3,我觉得这可能是一个 Laravel 框架错误,因为我正在为此绞尽脑汁......
我有一个数据库事务,其中保存了模型,所有这些都在 try/catch 中,但它仍然保存模型更新,我只是不明白为什么,因为它命中了catch()并且响应 json 命中了,所以我假设回滚正在运行,但数据库仍在更新。
try {
DB::beginTransaction();
foreach ($models as $model) {
$model->rungroup_id = $rungroup->id;
$model->zone_id = $rungroup->getFirstZoneID();
$model->delivery_status = 'next';
$model->save();
}
DB::commit();
return response()->json(['status' => 'success']);
} catch (Throwable | Exception $e) {
DB::rollBack();
Log::error($e);
return response()->json([
'status' => 'error',
'message' => $e->getMessage(),
], 500);
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
在更新 Laravel 并尝试重写代码以查看我是否犯了一个愚蠢的错误之后,我最终发现创建数据库表的人将表引擎设置为MyISAM而不是InnoDB数据库事务所需的......我希望 Laravel 抛出一个错误,这样我就知道了,但这确实挽救了我的理智,并希望它对其他人有帮助。
| 归档时间: |
|
| 查看次数: |
720 次 |
| 最近记录: |