2017-01-18 88 views
0

我已经使用了多个数据库连接。Yii1使用第二个数据库连接的访问​​模型类。多个数据库连接

main.php

'components'=>array(
    'db'=>array(
     'connectionString' => 'mysql:host=localhost;dbname=testdrive', 
     'emulatePrepare' => true, 
     'username' => 'root', 
     'password' => '', 
     'charset' => 'utf8', 
    ), 
    'db2'=>array(
      'connectionString' => 'mysql:host=remotelocalhost;dbname=seconddb', 
      'emulatePrepare' => true, 
      'username' => 'root', 
      'password' => '', 
      'charset' => 'utf8', 
      'class'=>'CDbConnection' 
     ), 
    ), 
) 

当模型类使用的第二个数据库连接(远程数据库 - DB2)记录未更新

PLZ帮我解决这个问题。

模型类

class Modelclass extends CActiveRecord 
{ 
    // model class code 
} 
+0

如何你使用连接.....你可以请张贴更多的代码 – lakshay

+0

最后我找出解决方案。谢谢lakshay。 – Kailas

回答

1

访问多个数据库中Yii1

下面连接的步骤是:

第一步:在配置创建数据库连接字符串/ main.php

'components'=>array(
    'db2'=>array(
     'class'=>'CDbConnection', 
     'connectionString' => 'mysql:host=RemoteHostIpAddress;dbname=Remote_DB_Name', 
     'emulatePrepare' => true, 
     'username' => 'Remote_DB_User_Name', 
     'password' => 'Remote_DB_Password', 
     'charset' => 'utf8', 
     'enableParamLogging' => true, 
    ), 

    'db'=>array(
     'class'=>'CDbConnection', 
     'connectionString' => 'mysql:host=localhost;dbname=DB_Name', 
     'emulatePrepare' => true, 
     'username' => 'DB_User_Name', 
     'password' => 'DB_Password', 
     'charset' => 'utf8', 
     'enableParamLogging' => true, 
    ), 
) 

第二步:创建组件的新类来访问第二个数据库连接(DB2)

class Db2ActiveRecord extends CActiveRecord 
{ 
    public static $db2; 

    public function getDbConnection() 
    { 

     if(self::$db2!==null) 
      return self::$db2; 
     else 
     { 
      self::$db2=Yii::app()->db2; 
      self::$db2->connectionString; 

      if(self::$db2 instanceof CDbConnection) 
      { 
       self::$db2->setActive(true); 
       return self::$db2; 
      } 
      else{ 
       throw new CDbException(Yii::t('yii','Active Record requires a "db" CDbConnection application component.')); 
      } 

     } 

    } 
} 

第三步:从第2个数据库使用组件创建类扩展模型类

class Modelclass extends Db2ActiveRecord 
{ 
    // model class code 
} 
+0

好.................... – lakshay