我正在为 owncloud 开发一个应用程序,并且正在使用 Owncloud API,而不是 App Framework。在这种环境中,我可以通过启动 SQL-Transactions\OCP\DB::beginTransaction();
并且可以提交事务 cia \OCP\DB::commit();
。
但我找不到回滚事务的方法。我用谷歌搜索了一整天并搜索了 Owncloud 核心文件,但找不到方法。
有谁知道如何做到这一点?现在我可以在我的 ajax 请求中保留未提交的事务,因为它们只有一个事务。但是在其他脚本中,我必须一个接一个地进行多个独立于另一个的事务。如果出现任何问题,我必须手动删除所有插入的行,这不是很好。
编辑 2014/07/30:
我发现OwncloudOC_DB_StatementWrapper
返回\OCP\DB::prepare
的 -Class 没有提供执行此操作的方法。但是,它将所有未知调用传递给底层\Doctrine\DBAL\Driver\Statement
-object。这个类在这里描述:Doctrine.DBAL.Statement
它有一个私有$_conn
的(\Doctrine\DBAL\Connection的实例),它有一个rollback
回滚事务的方法。但是,$_conn
是私有的,所以我无法访问它。