0

由于历史原因,所有模型都从 Zend_Db_Table 扩展而来。现在,我需要使用事务。如何?

我做了一些谷歌搜索,一些人说以下方式可以提供帮助:

1:$tableA->getAdapter()->beginTransaction(); 2:$tableA->getAdapter()->getDriver()->getConnection()->beginTransaction();

有没有更好的解决方案?

4

1 回答 1

-2

我通过将以下代码添加到 zend_db_table 中解决了这个问题: /** * surport transaction */

public function beginTransaction() {
    $this->getAdapter()->beginTransaction();
}
public function commit() {
    $this->getAdapter()->commit();
}
public function rollback() {
    $this->getAdapter()->rollback();
}

这样我就可以在从 zend_db_table 扩展的模型中使用事务,如下所示:

public function test(){
    $this->beginTransaction();

    try {
        $this->addCourseItem('1', '1', '1', '1', '1');
        $this->fetchRow("none-exist-field = 1");
        //the following code will not execute
        echo "okay";
        $this->commit();
    } catch (exception $e) {
        $this->rollback();
        echo "error message:".$e->getMessage();
    }

}
于 2013-01-15T01:15:51.413 回答