我阅读了yii文档,以下代码应该可以使用;
好吧,它没有。 :))db是主数据库
db1和db2是辅助数据库
这里有什么问题?
网站在线www.linkbook.co
,无法连接到任何数据库
'db' => array(
'connectionString' => 'mysql:host=localhost;dbname=linkbookco',
'emulatePrepare' => true,
'username' => 'user',
'password' => 'password',
'charset' => 'utf8',
'tablePrefix' => '',
),
'db1' => array(
'connectionString' => 'mysql:host=localhost;dbname=linkbookco1',
'username' => 'user',
'password' => 'password',
'charset' => 'utf8',
'tablePrefix' => '',
'class' => 'CDbConnection' // DO NOT FORGET THIS!
),
'db2' => array(
'connectionString' => 'mysql:host=localhost;dbname=linkbookco2',
'username' => 'user',
'password' => 'password',
'charset' => 'utf8',
'tablePrefix' => '',
'class' => 'CDbConnection' // DO NOT FORGET THIS!
),
答案 0 :(得分:6)
db
是Yii
的预定义组件,因此bedefault CActiveRecord
使用db
建立连接。因此,对于使用CDbConnection
类创建的其他组件,您必须在外部激活它们的连接。
所以你需要覆盖getDbConnection()
的{{1}}方法。
为CActiveRecord
等特定数据库连接扩展CActiveRecord
。
将其保存为db1
并放在组件目录中。
Db1CActiveRecord.php
现在,您需要将<?php
/**
*
* Used for db1 database connection
*
*/
class Db1CActiveRecord extends CActiveRecord {
private static $db1 = null;
public function getDbConnection()
{
if (self::$db1 !== null)
return self::$db1;
else
{
self::$db1 = Yii::app()->db1;
if (self::$db1 instanceof CDbConnection)
{
self::$db1->setActive(true);
return self::$db1;
}
else
throw new CDbException(Yii::t('yii','Active Record requires a "db" CDbConnection application component.'));
}
}
}
用于数据库Db1CActiveRecord
的模型类。
像:
db1
为db1和amp;实现这种方式db2数据库。