ExtendedActiveRecord 继承自 CActiveRecord,因此基础功能与 CActiveRecord 无异
为添加对多数据库连接的支持,增加了对 connectionName() 方法的回调,用法跟已有的 tableName() 方法一致,返回数据库连接组件名称的字符串。
如果不定义该方法,则使用默认数据库连接(db)
源码如下:
class ExtendedActiveRecord extends CActiveRecord{ public static $db = array(); /** * @return CDbConnection * @throws CDbException */ public function getDbConnection() { $componentName = $this->connectionName(); if (isset(self::$db[$componentName])) { return self::$db[$componentName]; } else { self::$db[$componentName] = Yii::app()->getComponent($componentName); if (self::$db[$componentName] instanceof CDbConnection) return self::$db[$componentName]; else { $message = 'Active Record keyword requires a "' . $componentName . '" CDbConnection application component.'; Yii::log($message, CLogger::LEVEL_ERROR, 'extended'); throw new CDbException(Yii::t('yii', $message)); } } } public function connectionName() { return 'db'; }}
实例:
class SomeModelClass extends ExtendedActiveRecord{ ...... public function connectionName() { return 'some-db-connection'; } ......}