ZF2中的Zend \ Db如何控制交易? [英] How does Zend\Db in ZF2 control transactions?
问题描述
ZF1 Zend_Db参考手册的整个部分关于执行交易.
The ZF1 Zend_Db reference manual has an entire section on performing transactions.
ZF2 Zend \ Db参考手册缺少任何文档交易.
如何在ZF2中执行交易?示例代码会有所帮助.
How do I perform transactions in ZF2? Example code would be helpful.
推荐答案
缺少的文档很奇怪.
要了解发生了什么情况,我不得不深入研究 Zend \ Db \ Adapter的API文档.
To find out what happened, I had to dive into the API docs for Zend\Db\Adapter.
看起来beginTransaction
,rollback
和commit
在
It looks like beginTransaction
, rollback
and commit
are defined in Zend\Db\Adapter\Driver\ConnectionInterface. 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()
.
Eww.
我希望其他人能有更多的知识,并且可以使用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语句. 大概好,因为看起来Zend \ Db不会跟踪事务状态.
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 Zend\Db keeps track of the transaction state.
这篇关于ZF2中的Zend \ Db如何控制交易?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!