Php Yii:在使用activerecord时,如何对特定查询使用不同的数据库

Php Yii:在使用activerecord时,如何对特定查询使用不同的数据库,php,yii,Php,Yii,Country.php <?php namespace app\models; use yii\db\ActiveRecord; class Country extends ActiveRecord { } protected/config/main.php return array( 'components' => array( 'db' => require(dirname(__FILE__).'/../../db_config.ph

Country.php

<?php

namespace app\models;

use yii\db\ActiveRecord;

class Country extends ActiveRecord
{
}
protected/config/main.php

return array(
    'components' => array(
            'db' => require(dirname(__FILE__).'/../../db_config.php'),
            'dba' => require(dirname(__FILE__).'/../../dba_config.php'),
            'dbmobisite' => require(dirname(__FILE__).'/../../dbmobisite_config.php'),
            'dbamobisite' => require(dirname(__FILE__).'/../../dbamobisite_config.php'),
    )
)
现在我改变了:

$db = Yii::app()->getComponent('dbmobisite'); //wanted to use different db
$db->setActive(true); //changing it to active
$countries = Country::find()->orderBy('name')->all(); //but this still queries using "db" configuration not "dbmobisite" configuration.
我只想对单个查询使用“dbmobisite”。可能吗?如果可能的话,请帮助我


提前感谢

我认为最简单的解决方案是创建一个由该类扩展的新类并重写getDb()方法,例如:

<?php

namespace app\models;

use yii\db\ActiveRecord;

class CountryOtherDb extends Country
{
      public function getDb()
      {
             return \Yii::$app->otherDb
      }
}

<?php

namespace app\models;

use yii\db\ActiveRecord;

class CountryOtherDb extends Country
{
      public function getDb()
      {
             return \Yii::$app->otherDb
      }
}