繁体   English   中英

在Propel2中与多个表进行交易

[英]Transaction with more than one table in Propel2

在Propel2 ORM( http://propelorm.org/documentation/05-transactions.html )的文档中,有一个如何在事务中包装查询的示例。 连接到单个数据库表“帐户”:

$con = Propel::getWriteConnection(AccountTableMap::DATABASE_NAME);

如何获取全局PDO连接对象或与2个表的连接(例如“帐户”和“预订”)?

例如,我想要的(伪代码):

$con = Propel::getWriteConnection(AccountTableMap::DATABASE_NAME, 
                                  BookTableMap::DATABASE_NAME);

你引用的例子很简单。 你的错误正如你在问题中所说的那样思考与单个数据库表“帐户”的连接: 始终没有连接到整个数据库。 Propel只提供了一种获取使用表作为参数的连接句柄的方法,让我感到困惑。

你做

$con = Propel::getWriteConnection(AccountTableMap::DATABASE_NAME);

在任何表上,只是为了得到$con连接句柄。

事务由连接控制,而不是语句。 因此,一旦拥有连接对象,就可以启动事务,而事务的整个过程就是可以将该事务中的任意数量的表更改为单个工作单元(事务)。

所以一旦你有了$con句柄,你就开始了一个交易

$con->beginTransaction();

以及你在该声明与之间作出的任何修改

$con->commit();

要么

$con->rollback();

将所有人一起提交或全部回滚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM