2017-06-03 137 views
0

我不知道這聽起來很愚蠢或重複的問題。但我試圖移動到我的項目中的多個數據庫。每個公司應該有一個特定的數據庫。每個公司應該有不同類型的用戶(我的意思是具有不同角色的用戶)。所有數據庫具有相同的結構但數據不同。這可能跳轉到另一個數據庫?如果是,如何?yii2多個數據庫認證

回答

1

是可能的幾種方式

的方式是根據不同分貝componente聲明中你confing

return [ 
     'components' => [ 
     'db_default' => [ 
       'class' => 'yii\db\Connection', 
       'dsn' => 'mysql:host=localhost;dbname=mydb_default', 
       'username' => 'my_username_default', 
       'password' => 'my_password_default', 
      ], 
      'db1' => [ 
       'class' => 'yii\db\Connection', 
       'dsn' => 'mysql:host=localhost;dbname=mydb1', 
       'username' => 'my_username1', 
       'password' => 'my_password1', 
      ], 
      'db2' => [ 
       'class' => 'yii\db\Connection', 
       'dsn' => 'mysql:host=localhost;dbname=mydb2', 
       'username' => 'my_username2', 
       'password' => 'my_password2', 
      ], 
      .... 


     ], 
    ]; 

,那麼你可以擴展你所有的類重新定義getDb功能

class Customer extends ActiveRecord 
    { 
     // ... 

     public static function getDb() 
     { 
      // you could check some application condition for get the db you need 
      // use the "db2" application component 
      switch ($my_condition) { 
      case 'condition_1': 
       return \Yii::$app->db1; 
       break; 
      case 'condition_2': 
       return \Yii::$app->db2; 
       break;    
      default: 
       return \Yii::$app->db_default; 
       break; 
      } 

     } 
    } 

另一方式是創建連接到db的連接

if (isset(Yii::$app->db)){ 
    Yii::$app->db->close() 
    } 

    Yii::$app->db= \yii\db\Connection([ 
     // dsn user and password are from session, set these value during login procedure 
     'dsn' => 'mysql:host=localhost;dbname=your_act_dbname', 
     'username' => 'your_act_username', 
     'password' => 'your_act_password, 
    ]); 


$models = Yii::$app->db->createCommand('SELECT * FROM your_table') 
      ->queryAll(); 

在$的模型,你應該從連接 分配數據庫中選擇表的所有車型,您可以檢查$模型的內容如:使用的var_dump($機型)

+0

如何動態地更改連接? ? – Sherzod

+0

對我有一點幫助的人。描述如何動態改變? – Sherzod

+0

當你需要連接另一個數據庫時,你可以關閉()打開連接並創建一個新的連接。http://www.yiiframework.com/doc-2.0/yii-db-connection.html http:// www。 yiiframework.com/doc-2.0/guide-db-dao.html – scaisEdge