Thinkphp 不支持事务嵌套的解决方案,TP嵌套事务

kevin.Zhu 发布于:2014-2-26 14:14 分类:Php  有 20 人浏览,获得评论 0 条  

Thinkphp 不支持事务嵌套的解决方案,TP嵌套事务

TP大家应该比较熟悉,不过强大并不支持事务嵌套,不多废话直接上代码

修改ThinkPHP\Library\Think\Model.class.php,主要修改startTrans() ,rollback(),commit() 这三个方法 具体方法如下:

1 在protected $methods 后加入(大约在63行)


/**
     * 启动事务
     * @access public
     * @return void
     */
    public function startTrans() {
        ++$this->transactions;
        if ($this->transactions == 1){
            $this->commit();
            $this->db->startTrans();
        }
        return ;
    }
 
    /**
     * 提交事务
     * @access public
     * @return boolean
     */
    public function commit() {
        if($this->transactions == 1){
            $this->db->commit();
        }
        --$this->transactions;
    }
 
    /**
     * 事务回滚
     * @access public
     * @return boolean
     */
    public function rollback() {
        if($this->transactions == 1){
            $this->transactions = 0;
            return $this->db->rollback();
        }
        --$this->transactions;
    }