Dos bases de datos MySQL

Hola a todos, soy nuevo en esto del yii y ya tengo una duda.

Necesito conectarme a dos bases de datos, una para controlar solamente los usuarios (es una base de datos de usuarios, que con el mismo login/password acceden a diferentes webs), la otra es la base de datos de la propia aplicación en sí.

Es fácil hacer esto con yii??

Conozco dos formas de usar dos bases de datos mysql

(una sola para bases de datos de distinto fabricante o con login distinto)

te las detallo a continuacion

la mas facil: poner el prefijo de la tabla la base de datos dentro del model de la tabla

Ejemplo de la tabla Usuarios, suponienmdo que esta en la base de datos Login







	public function tableName()

	{

		return 'Login.Usuarios';

	}



la otra forma, un poco mas complicada, pero sirve para tener acceso a varias bases de datos (Postgres, oracle, mysql,… a la ves)

primero: definir una clase que extienda a CActiveRecord





class CActiveRecord_Login extends CActiveRecord {

public static $login;

public function getDbConnection()

   {

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

     	return self::$login;

      else

      {

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

     	if(self::$login instanceof CDbConnection) 	{

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

            return self::$login;

     	}

     	else

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

      }

   }

}



Segundo: definir la conexión en config/main.php (pongo dos una para mysql otra para oracle)




...


'components'=>array(




		'login'=>array(

			'class'=>'CDbConnection',

			'connectionString' => 'mysql:host='.$ip_servidor_mysql.';dbname=login',

			'emulatePrepare' => true,

			'username' => $usuario,

			'password' => $clave_mysql,

			'charset' => 'utf8',

		),


                'oracle'=>array(

                                'class'=>'CDbConnection',

                                'connectionString'=>'oci:dbname=localhost/xe',

                                'username'=>'XXXXX',

                                'password'=>'*******'

                                ), 

....



Luego defines el modelo como





class Usuarios extends CActiveRecord_Login

{

....

}



yo lo uso así y funciona

Muchas gracias por la respuesta!

Lo probaré cuando llegue a casa. En cuanto a lo del login, la historia es que te logueas en una base de datos común a aplicaciones, la otra base de datos es común para una aplicación concreta, pero sin login, utiliza en común, pero almacena datos de usuarios de la base de datos global.

Me parece algo enrevesado, pero tiene que ser así.

También puedes hacer referencia al siguiente artículo en el wiki: Multiple-database support in Yii. Buena suerte.

Gracias a todos, a ver si dentro de poco soy yo el que resuelve dudas jeje.