Yii2在运行时设置db连接
问题描述:
在我的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中实现这一目标?
答
没问题,这是支持
\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
非常感谢。这工作完美。我正在使用第一种方法。现在我可以在我的模型中只需要访问“其他”数据库:public static function getDb(){return Yii :: $ app-> db2; }。这会从正确的数据库中提取它。作为一个方面,我已经将“其他”数据库的所有模型移动到单独的名称空间中。我想我也可以为这个命名空间单独扩展ActiveRecord,但是在那里使用getDB,然后将那个命名空间中的所有模型扩展到那个AR类。 –