Yii的默認(rèn)配置為一個數(shù)據(jù)庫,不過可以很容易的支持多個數(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;
- }
- ...
- }
如果有很多模型會使用db_member, 可以從CActiveRecord派生一個子類:CMemberActiveRecord, 把getDbConnection的重寫放在該AR的子類中。
然后模型都從該CMemberActiveRecord中派生。
多數(shù)據(jù)庫配置遇到的一個典型的錯誤是:
Object configuration must be an array containing a class element
原因是配置中非$db的其他數(shù)據(jù)庫沒有設(shè)置class屬性,添加該屬性并設(shè)置其值為CDbConnection即可。
參考鏈接
http://yiihaa.com/models-and-multiple-database-connections
by iefreer
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。