tp5.1 事务操作疑问 ?

发布于 2022-09-12 03:34:55 字数 622 浏览 26 评论 0

在进行一个事务操作的时候,多表结构回滚,是全部回滚还是只回滚主表 ?

如:
$modelA->startTrans();
try {

$modelA->save($datas…);
$modelB->save($datas…);
$modelC->save($datas…);
// cache error
$modelD->save($datas…);
……
$modelA->commit();

} catch(Error $e) {

$modelA->rollback();

}

执行到 $modelC 的时候发生错误,ABD 都会回滚么 ?

作者有句话:
事务操作一定要谨记一条,必须是相同的数据库连接对象

这个相同的数据库链接对象怎么理解 ?
Db::name('tableA')->todo
Db::name('tableB')->todo
他们是相同的链接对象吗 ?

$modelA $modelB … 他们是同一个链接对象吗 ?

如果在 try 语句中,即使用 DB 又使用模型,就代表不是同一个链接对象吗 ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你不是我要的菜∠ 2022-09-19 03:34:55

我理解的 Db类获得的链接是单例链接 所以是同一个链接

梦萦几度 2022-09-19 03:34:55
Db::name('tableA')->todo  
Db::name('tableB')->todo

这种除非连接的不是同一个数据库,正常应该是同一个链接
然后你上面说的是否会回滚,在 C 之前肯定会回滚,在C 之后的都没执行不会回滚也没东西可以回滚

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文