Yii的默認(rèn)配置為一個(gè)數(shù)據(jù)庫,不過可以很容易的支持多個(gè)數(shù)據(jù)庫的操作, 這為按業(yè)務(wù)分割數(shù)據(jù)庫提供了基礎(chǔ)設(shè)施。如下所示:
- //cms DB connection
- 'db' => (defined('DB_CONNECTION') ? array(
- 'connectionString' => DB_CONNECTION,
- 'username' => DB_USER,
- 'password' => DB_PWD,
- 'charset' => 'utf8',
- 'emulatePrepare' => true,
- 'enableParamLogging' => true,
- 'schemaCachingDuration' => 3600, //cache table schema
- ) : array()),
- //member DB connection
- 'db_member' => (defined('DB_CONNECTION_MEMBER') ? array(
- <span style="color:#FF6666;"> 'class'=> 'CDbConnection' , </span>
- 'connectionString' => DB_CONNECTION_MEMBER,
- 'username' => DB_USER_MEMBER,
- 'password' => DB_PWD_MEMBER,
- 'charset' => 'utf8',
- 'emulatePrepare' => true,
- 'enableParamLogging' => true,
- 'schemaCachingDuration' => 3600, //cache table schema
- ) : array()),
然后在模型中重載getDbConnection函數(shù),比如: - class Point extends CActiveRecord {
-
- public function getDbConnection() {
-
- return Yii::app()->db_member;
- }
- ...
- }
如果有很多模型會(huì)使用db_member, 可以從CActiveRecord派生一個(gè)子類:CMemberActiveRecord, 把getDbConnection的重寫放在該AR的子類中。 然后模型都從該CMemberActiveRecord中派生。
多數(shù)據(jù)庫配置遇到的一個(gè)典型的錯(cuò)誤是: Object configuration must be an array containing a class element 原因是配置中非$db的其他數(shù)據(jù)庫沒有設(shè)置class屬性,添加該屬性并設(shè)置其值為CDbConnection即可。
參考鏈接 http:///models-and-multiple-database-connections
by iefreer
|