出于某种原因,我无法切换数据库连接以将数据保存在辅助数据库中。
来自主数据库的数据库表:
我有一个website model
类存储有关 a 的数据website
。
WebsiteM extends Website wich extends CActiveRecord
我有一个url model
类存储有关 a 的数据url
。
UrlM extends Url wich extends CActiveRecord
每个都url
属于一个website
;每个url
都有一个FK
名称website_id
,告诉网站它属于;
因为website model
andurl model
每天都在变化,所以我为每个扩展它们的模型编写了 a new class
,就像websiteM extends website
and一样,urlM extends url
当我使用 重新生成模型时gii
,我的增强总是被保存。
来自从属数据库的数据库表:
我有一个slave url model
类将有关 a 的数据存储url
在一个从属活动数据库中。
与;slave url model
相同main url model
就像这样:UrlSlaveM extends UrlSlave wich extends HActiveRecord wich extends CActiveRecord
在某些时候,我尝试切换到辅助数据库,通过在新的类实例之后relations
找出我需要切换到id
的数据库,例如:db
$model_urlSlave_new = new UrlSlaveM();
$model_urlSlave_new::$server_id = $model_url->websiteM_relation->database_id;
这应该工作,但它没有。这是动作发生的地方,也是连接应该切换的地方:
class HActiveRecord extends CActiveRecord {
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.'));
}
}
中的设置main.php
'db' => array(
'connectionString' => 'mysql:host=localhost;dbname=dvc',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
),
'db2' => array(
'connectionString' => 'mysql:host=localhost;dbname=dvc2',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'tablePrefix' => '',
'class' => 'CDbConnection' // DO NOT FORGET THIS!
),
'db1' => array(
'connectionString' => 'mysql:host=localhost;dbname=dvc1',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'tablePrefix' => '',
'class' => 'CDbConnection' // DO NOT FORGET THIS!
),