How to create dynamic database in Active record

Hi,

Creating Dynamic Database in Yii Active Records

In Model (YII) we need to change to function like getDbConnection() and model()

Replace the Following method in you model and follow some steps

Step 1:

    public static $host;

public static $port;

public static $user;

public static $pass;

public static $connection = null;

Step 2:

public function getDbConnection()

{

self::$host = Yii::app()->params[‘defaultDbHost’];

    self::$port = Yii::app()->params['defaultDbPort'];


    self::$user = Yii::app()->params['superDbUser'];


    self::$pass = Yii::app()->params['suPassword'];

if(self::$connection!==null)

                  return self::$connection;

else

{

 // $connectionString = 'mysql:host='.self::$host.';port='.self::$port.';dbname='.Yii::app()->params['activeDb'];

$connectionString = ‘mysql:host=’.self::$host.’;dbname=’.Yii::app()->params[‘activeDb’];

self::$connection=new CDbConnection($connectionString, self::$user, self::$pass);

self::$connection->emulatePrepare = true;

self::$connection->charset = ‘utf8’;

self::$connection->active=true;

if(self::$connection instanceof CDbConnection)

return self::$connection;

else

throw new CDbException(Yii::t('yii','Active Record requires a "db" CDbConnection application component.'));

}

}

Step 3:

public static function model($dbName,$className=CLASS)

{ if(!$dbName){

 $dbName='default_database'; // if your dynamic database has not configured this default database will runs


 }

echo Yii::app()->params[‘activeDb’] = $dbName;

return parent::model($className);

}

Suppose your model name was usermodel

syntax:

usermodel::model($dynamicDataBaseName)->findAll();

if any queries please comment.

Happy Code !