Yii2 mongodb:如何更改数据库?

时间:2015-05-28 01:31:08

标签: yii2

我的应用程序使用许多数据库,它们具有相同的结构,但数据在不同的数据库之间没有关系。我需要通过请求参数更改数据库。 在配置中只能设置dsn,但我想动态更改数据库。 我怎么能这样做。

2 个答案:

答案 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->mongodbYii::$app->othermongodb(或者如果您愿意,使用get() - 方法)访问您的关联。这也允许您为来自不同数据库的ActiveRecord类指定正确的数据库:

class MyOtherDBMongo extends \yii\mongodb\ActiveRecord
{
   public static function getDb()
   {
       return \Yii::$app->get('othermongodb');
   }
}