En esta oportunidad quiero compartir cómo podemos conectarnos a múltiples o varias Bases de Datos en un mismo proyecto usando el framework Yii.
Lo primero que tenemos que hacer es modificar la configuración de las Bases de Datos en el archivo main.php del directorio protected/config/ de nuestro proyecto
... 'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=baseDatos1', 'emulatePrepare' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8', ), 'nueva_conexion'=>array( 'class'=>'CDbConnection', 'connectionString' => 'mysql:host=localhost;dbname=baseDatos2', 'emulatePrepare' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8', ), ... |
No sobra recordar que Yii soporta conexiones a Motores de Bases de Datos como Oracle, SQL Server, MySQL y SQLlite
En el código anterior hemos configurado el acceso a dos bases de datos MySQL una bajo el nombre por defecto db y la otra bajo el nombre nueva_conexion, por defecto Yii se conectará siempre a la Base de Datos configurada como db
Ahora solo nos queda modificar nuestros modelos que se conectarán a la nueva Bases de Datos nueva_conexion
class Personales extends SActiveRecord { public static $conection; public function getDbConnection() { if(self::$conection!==null) return self::$conection; else { self::$conection = Yii::app()->nueva_conexion; if(self::$conection instanceof CDbConnection){ self::$conection->setActive(true); return self::$conection; } else throw new CDbException(Yii::t('yii',"Active Record requires a '$conection' CDbConnection application component.")); } } ... } |
Notese como se modifica la linea self::$conection = Yii::app()->nueva_conexion; con el valor nueva_conexion con el cual configuramos la nueva Base de Datos.

