由于某种原因,我无法切换数据库连接以保存辅助数据库中的数据。
来自主db的db表:
我有一个website model
类,用于存储有关website
。
WebsiteM extends Website wich extends CActiveRecord
我有一个url model
类,用于存储有关url
。
UrlM extends Url wich extends CActiveRecord
每个url
属于website
;每个url
都有一个名为FK
的{{1}},告诉网站它属于;
由于website_id
和website model
每天都在变化,我为每个模型编写了url model
来扩展它们,例如new class
和websiteM extends website
这样当我使用urlM extends url
重新生成模型时,我的增强功能始终会保存。
来自slave db的db表:
我有一个gii
类,用于在其中一个从属活动dbs中存储有关slave url model
的数据。
url
与slave url model
;
就像这样:main url model
在某些时候,我尝试切换到辅助数据库,在新的类实例之后使用UrlSlaveM extends UrlSlave wich extends HActiveRecord wich extends CActiveRecord
查找我需要切换到的relations
的{{1}}像:
id
db
这应该有效,但事实并非如此。这是动作发生的地方,这是连接应该切换的地方:
$model_urlSlave_new = new UrlSlaveM();
<{1}} 中的设置
$model_urlSlave_new::$server_id = $model_url->websiteM_relation->database_id;
答案 0 :(得分:0)
我找到了解决方案:
以下代码已移至主模型类,并删除了hactiverecord
类。
public static $server_id = 2;
public static $master_db;
public function getDbConnection() {
self::$master_db = Yii::app()->{"db" . self::$server_id};
if (self::$master_db instanceof CDbConnection) {
self::$master_db->setActive(true);
return self::$master_db;
}
else
throw new CDbException(Yii::t('yii', 'Active Record requires a "db" CDbConnection application component.'));
}
它有效。测试