A simple class to use a different db for a module

  1. How to use
  2. Notes

What would you do if you want/need to have a different than the main database connection in an module's models?

How to use

Let's say we create a module with name test under the protected/modules/ folder.


In your config file you can declare a module like:


Important: The 'class'=>'CDbConnection' is required, for this simple implementation.


In your TestModule.php file ( the class that extends the CModule ) under the protected/modules/test folder, declare a public property named db.

class TestModule extends CModule
  public $db;
Your models

Then you have to simple change the CActiveRecord class your module's models extends to EModuleActiveRecord

class EModuleActiveRecord extends CActiveRecord
    public function getDbConnection()
        $db = Yii::app()->controller->module->db;
        return Yii::createComponent($db);


In this scenario we had a module that we wanted to change database for, but the extension of the CActiveRecord and the override of the getDdConnection() is common general a common case. Make sure you import the EModuleActiveRecord. If you have generated the module with gii, just add file under the components or models folder.