ZF2 中的 ZendDb 如何控制事务? [英] How does ZendDb in ZF2 control transactions?

查看:19
本文介绍了ZF2 中的 ZendDb 如何控制事务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

ZF1 Zend_Db 参考手册有一个整个部分 关于执行交易.

The ZF1 Zend_Db reference manual has an entire section on performing transactions.

ZF2 ZendDb 参考手册缺少关于交易.

如何在 ZF2 中执行事务?示例代码会有所帮助.

How do I perform transactions in ZF2? Example code would be helpful.

推荐答案

缺少的文档很奇怪.

为了找出发生了什么,我不得不深入ZendDbAdapter 的 API 文档.

To find out what happened, I had to dive into the API docs for ZendDbAdapter.

看起来beginTransactionrollbackcommit 都定义在ZendDbAdapterDriverConnectionInterface.这意味着它们是可在每个单独的适配器连接上调用的方法.不幸的是,连接本身被埋没了.

It looks like beginTransaction, rollback and commit are defined in ZendDbAdapterDriverConnectionInterface. This means that they are methods callable on every single adapter connection. Unfortunately the connection itself is rather buried.

我不清楚——目前无法提供一个例子——是弄清楚你实际上在哪个对象上调用了这些方法.在最坏的情况下,看起来您可能想要调用 $adapter->getDriver()->getConnection()->beginTransaction().

What I'm not clear on -- and can't provide an example for at this time -- is figuring out which object you actually call these methods on. In the worst case, it looks like you might want to call $adapter->getDriver()->getConnection()->beginTransaction().

呃.

我希望有更多知识的其他人以及手边的 ZF2 副本会看到这一点并提供更好的选择.

I'm hoping someone else with more knowledge, and a copy of ZF2 handy, will see this and provide a better option.

不要忘记你可以发出 BEGIN TRANSACTION/ROLLBACK/COMMIT/SET autocommit=... 自己的 SQL 语句.这可能没问题,因为它看起来不像 ZendDb 跟踪事务状态.

Don't forget that you can just issue BEGIN TRANSACTION/ROLLBACK/COMMIT/SET autocommit=... SQL statements yourself. This is probably OK, as it doesn't look like ZendDb keeps track of the transaction state.

这篇关于ZF2 中的 ZendDb 如何控制事务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆