问题描述
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.
看起来beginTransaction
、rollback
和commit
都定义在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 如何控制事务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!