2017-01-09 64 views
3

在我的Yii2(基礎應用程序)web.php中,我將NULL連接配置爲第二個數據庫連接。Yii2在運行時設置db連接

這需要填充其從記錄來的主數據庫連接的有效參數:

'db' => require(__DIR__ . '/db.php'), 
'db2' => [ 
    'class' => 'yii\db\Connection', 
    'dsn' => NULL, 
    'username' => NULL, 
    'password' => NULL, 
    'charset' => 'utf8', 
], 

初始化程序()我需要填寫NULL參數與我檢索值後從另一個數據庫中進一步在模型中使用它。

我如何在Yii2中實現這一目標?

回答

6

沒問題,這是支持

\Yii::$app->db2->close(); // make sure it clean 
\Yii::$app->db2->dsn= 'yourdsn'; 
\Yii::$app->db2->username = 'username'; 
\Yii::$app->db2->password = 'password'; 

做,現在你可以使用它

Yii::$app->db2->... 

另一種方式:

$connection = new \yii\db\Connection([ 
    'dsn' => $dsn, 
    'username' => $username, 
    'password' => $password, 
]); 
$connection->open(); 
$command = $connection->createCommand('SELECT * FROM post')->....; 

參見:http://www.yiiframework.com/doc-2.0/yii-db-connection.html

+0

非常感謝。這工作完美。我正在使用第一種方法。現在我可以在我的模型中只需要訪問「其他」數據庫:public static function getDb(){return Yii :: $ app-> db2; }。這會從正確的數據庫中提取它。作爲一個方面,我已經將「其他」數據庫的所有模型移動到單獨的名稱空間中。我想我也可以爲這個命名空間單獨擴展ActiveRecord,但是在那裏使用getDB,然後將那個命名空間中的所有模型擴展到那個AR類。 –