2017-01-18 18 views
0

私は複数のデータベース接続を使用しています。2番目のデータベース接続を使用して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' 
     ), 
    ), 
) 

モデルクラスが第2のデータベース接続(リモートデータベース - DB2)を使用し、レコードが

が更新されていないPlzは、この問題を解決するために私を助けて。

モデルクラス

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

で作成したクラスを使用して第二のデータベースからモデルクラスを拡張あなたは接続を使って.....いくつかのコードを投稿してください。 – lakshay

+0

最後に私は解決策を見つけました。ラクシャーに感謝します。 – Kailas

答えて

1

Yii1

以下

でアクセスする複数のデータベースの接続手順は次のとおりです。

ステップ1:設定/ 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, 
    ), 
) 

ステップ2:第二のデータベース接続(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.')); 
      } 

     } 

    } 
} 

ステップ3:コンポーネントどのように

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

良い.................... – lakshay

関連する問題