Zend DB原子事务

时间:2011-05-22 11:30:16

标签: php mysql zend-framework transactions

我必须执行一组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中实现同样的目标(一起生存或死在一起)?

感谢

卢卡

1 个答案:

答案 0 :(得分:2)

Zend_Db也包装了事务功能。因此,无论是否使用ZF,都没有什么不同。

您可以在Adapter Section of the Zend_Db Manual中找到ZF交易。查找“控制数据库事务”这一段。