ZF2中的Zend \ Db如何控制交易? [英] How does Zend\Db in ZF2 control transactions?

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

问题描述

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.

看起来beginTransactionrollbackcommit

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屋!

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