我必须执行一组SQL操作,这些操作要么一起存在,要么一起死掉。 因此,如果我的语句的任何部分失败,整个过程将回滚到开头,就好像事务从未发生过一样。
没有zend我会这样做:
$conn->query('BEGIN');
$conn->query($myQuery);
//rollback if anything went wrong
$conn->query('COMMIT');
在Zend中,我在我的bootstrap中创建了Db连接:
protected function _initDb()
{
$config=Zend_registry::get('config');
$db = Zend_Db::factory($config->resources->db->adapter, $config->resources->db->params);
//set default adapter
Zend_Db_Table_Abstract::setDefaultAdapter($db);
Zend_Registry::set("db", $db);
}
与Db的交互是由模型类(扩展Zend_Db_Table_abstract)
完成的class Platform extends Zend_Db_Table_Abstract
{
public function insertPlatform($x)
{
$this->insert($x);
}
}
class Game extends Zend_Db_Table_Abstract
{
public function insertGame($x)
{
$this->insert($x);
}
}
我怎样才能在Zend中实现同样的目标(一起生存或死在一起)?
感谢
卢卡
答案 0 :(得分:2)
Zend_Db也包装了事务功能。因此,无论是否使用ZF,都没有什么不同。
您可以在Adapter Section of the Zend_Db Manual中找到ZF交易。查找“控制数据库事务”这一段。