在 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();
是一起提交还是一起回滚。
关于php - Propel2 中有多个表的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32612911/