gpt4 book ai didi

php - Laravel/Eloquent 5 事务回滚不支持保存

转载 作者:行者123 更新时间:2023-11-29 05:04:24 26 4
gpt4 key购买 nike

我确实在让数据库事务处理模型时遇到了问题。我已经引用了 SO 上的相关帖子,但还没有成功。

在我的示例中,我在数据库中创建了一条新记录。我应该能够回滚并且新记录应该已经消失了不是吗?

        try{
DB::beginTransaction();

$oNewMap = $oMap->replicate();
$oNewMap->name = "[test] " . $oNewMap->name;
$oNewMap->save(); // works

DB::rollBack(); / /record still in db
}
catch(\Exception $e){
DB::rollBack();
/* Transaction failed. */
}

当回滚发生时,为什么保存的记录不会从数据库中消失?我是否遗漏了模型如何处理交易的内容?

顺便说一下,物理表都是 InnoDB。

[已编辑:将问题简化为简单的保存和回滚,而不是在第二次保存违反 FK 约束的情况下进行两次保存。]

最佳答案

如果模型不使用默认数据库连接,则必须在事务中指定它:

DB::connection('name')->beginTransaction();
DB::connection('name')->commit();
DB::connection('name')->rollBack();

关于php - Laravel/Eloquent 5 事务回滚不支持保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51341560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com