我的应用程序使用许多数据库,它们具有相同的结构,但数据在不同的数据库之间没有关系。我需要通过请求参数更改数据库。 在配置中只能设置dsn,但我想动态更改数据库。 我怎么能这样做。
答案 0 :(得分:0)
我得到了自己:
$mongo = Yii::$app->get('mongodb');
$mongo->options['db'] = 'foo';
答案 1 :(得分:0)
最简单的解决方案是在配置中定义多个连接:
'components' =>
[
...
'mongodb' =>
[
'class' => '\yii\mongodb\Connection',
'dsn' => 'mongodb://localhost:27017/database1',
],
'othermongodb' =>
[
'class' => '\yii\mongodb\Connection',
'dsn' => 'mongodb://localhost:27017/database2',
],
...
]
然后,您可以使用Yii::$app->mongodb
和Yii::$app->othermongodb
(或者如果您愿意,使用get()
- 方法)访问您的关联。这也允许您为来自不同数据库的ActiveRecord类指定正确的数据库:
class MyOtherDBMongo extends \yii\mongodb\ActiveRecord
{
public static function getDb()
{
return \Yii::$app->get('othermongodb');
}
}