zhong21jia 2012-09-06 23:28:50 4165次浏览 3条回复 0 0 0

今天好不郁闷! 修改了模型的getDbConnection()方法!

public $InInit = false;
public function getDbConnection()
{
    if( $this->InInit && self::$db!==null)
        return self::$db;
    else
    {
        self::$db=Yii::app()->getComponent('oracle');
        if(self::$db instanceof CDbConnection)
            return self::$db;
        else
            throw new CDbException(Yii::t('yii','Active Record requires a "db" CDbConnection application component.'));
    }
} 

当进行两个数据库的反复操作时! 数据库的连接配置会被修改(var_dump($model->dbConnection))! 导致查询错误。

增加了 public $InInit = false; 也没有用! 不懂 YII的数据库连接管理机制. 感觉是一个公共的变量保存了起来! 纠结!

怎么改啊!

调用了 mysql 模型 A ,再 oracle 模型B,在调用模型A就会出错!

  • 回复于 2012-09-07 10:18 举报

    可以配置两个数据库连接,一个是mysql的,一个是oracle 的,都写在配置文件里。

  • 回复于 2012-09-10 09:13 举报

    配置了! 我说的是数据库反复切换时,数据库链接配置被修改问题!
    就是模型的dbCriate属性被修改了的问题。
    调用B模型 时,B模型的链接参数确实A模型的!

    好不郁闷!

  • 回复于 2012-09-10 11:40 举报

    给$db换个名字,例如$db_mysql,$db_oracal,分别代表mysql和oracal的数据库链接,也分别在配置文件里配置一下。

您需要登录后才可以回复。登录 | 立即注册