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 !