Ayuda en Conexiona a varias DB

Hola gente de yii, espero que se encuentren bien, ojala me puedan ayudar en que alguien me explique como conectarme a varias bases de datos, lo que ocupo es poder conectarme a varias bases de datos, hacer consultas para extraer info y mostrarlas gráficamente o en reportes excel o pdf.

Tengo entendido que para hacer por ejemplo dos conexiones debo de modificar el archivo config y poner los parametros correspondientes por ejemplo:




'db'=>array(

   'connectionString'=>'mysql:host=localhost;dbname=PRIMERA_DB',

   'emulatePrepare'=>true,

   'username'=>'root',

   'password'=>'',

   'charset'=>'utf8',

),

'db_dos'=>array(

   'connectionString'=>'mysql:host=localhost;dbname=SEGUNDA_DB',

   'emulatePrepare'=>true,

   'username'=>'root',

   'password'=>'',

   'charset'=>'utf8',

),



Se que ya dentro de cualquier acción puedo hacer la consulta nativa y indicarle la db por ejemplo:




$sql = "select * from TablaX";

$db = Yii::app()->db2->createCommand($sql)->queryAll();



y se que asi me regresa la configuración de la primera db que tengo indicada, y ps es la que esta indicada yii por default, pero si pongo la otra db de esa manera es donde me marca errores.

Pero…, para poder hacer mis consultas y extraer la info que ocupo es donde tengo la duda…, ojala alguien me puedan ayudar o explicarme como hacer eso, se los agradecería mucho.

Por cada componente db adicional que quieras añadir al igual que en el resto de componentes tienes que indicarle la clase que implementa.

En tu caso CDbConnection, modifica esto :


'db_dos'=>array(

   'class' => 'CDbConnection',

   'connectionString'=>'mysql:host=localhost;dbname=SEGUNDA_DB',

   'emulatePrepare'=>true,

   'username'=>'root',

   'password'=>'',

   'charset'=>'utf8',

),

Espero que te sirva.

Un saludo.

Muchas gracias por la contestación, aunque luego encontre dos formas de hacerlo…, pero clasico error de que copie y pegue los parámetros de conexión y ERROR!!!, se me olvido quitar el localhost ajaja, mira te comento, hay un video en el cuál explica esto de yii, para eso hace una extensión a ActiveRecord y nada mas tienes que indicar los parametros de conexión, pongo el código




class GActiveRecord extends CActiveRecord { 

	public static $db_dos;

	public function getDbConnection() { 

		

		 if(self::$db_dos !== null){

			 return self::$dbDgo;

 		}else{

			 self::$db_dos = Yii::app()->db_dos;

			 if(self::$db_dos instanceof CDbConnection){

				self::$db_dos->setActive(true);

				return self::$db_dos;

			}else{

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

			}

		}

	}

}



y para los que no quieran batallar usando models, ps nada mas los models le ponen a donde deben de extender en este caso a GActiveRecord, y ya usan los models propios de una db en especifico, pero al momento de tener varias es algo tedioso y se puede prestar a reborujarse con los models, en si nada mas es como dices, solo debes de indicar el parametro que haga referencia a la conexión y listo se emplea fácilmente, muchas gracias Pana, antes que nada por tu contestación, espero que te encuentres bien y ps al igual indico otra manera de realizar la conexión, Saludos…

Sino me equivoco esos vídeos son de Gustavo Salgado no?, espero pronto seguir sus pasos y hacer lo mismo con yii2.

Te dejo una wiki que se me paso dejarlo en el otro comentario donde explica el método que comentas más detalladamente :

wiki

Un saludo ;)

Asi es pana son de Gustavo Salgado, y muchas gracias por la wiki, la vere, aunque por mientras se me haría mas comodo indicar consultas, ya que de todas maneras uso mas las consultas que lo que me da por default yii, pero gracias por la contestación. Saludos y Feliz Año Nuevo lml