溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在Yii框架中配置多數(shù)據(jù)庫

發(fā)布時間:2021-04-13 16:47:02 來源:億速云 閱讀:197 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了怎么在Yii框架中配置多數(shù)據(jù)庫,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

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(
  'class'=> 'CDbConnection' ,
  '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即可。

上述內(nèi)容就是怎么在Yii框架中配置多數(shù)據(jù)庫,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI