Hola.
Me gustaría saber se alguien a hecho conexión a dos bases de datos en el mismo proyecto, mi caso consiste en que debo conectarme a una BD remota y a otra local, no estoy seguro como podría hacerse.
Muchas gracias.
Hola.
Me gustaría saber se alguien a hecho conexión a dos bases de datos en el mismo proyecto, mi caso consiste en que debo conectarme a una BD remota y a otra local, no estoy seguro como podría hacerse.
Muchas gracias.
Puedes extender CActiveRecord
class ECActiveRecord extends CActiveRecord
y luego haces que la funcion getDbConnection retorne tu base de datos
public function getDbConnection() {
// creo que por defecto retorna 'db'
return 'otra';
}
y luego defines tu modelo
class MiTabla extends ECActiveRecord {
...
}
‘otra’ debe estar definida en el config/main.php
aqui el codigo completo, en el anterior me falto bastante
class EActiveRecord extends CActiveRecord
{
public static $otra;
public function getDbConnection()
{
if(self::$otra!==null)
return self::$otra;
else
{
self::$otra=Yii::app()->otra;
if(self::$otra instanceof CDbConnection)
{
self::$otra->setActive(true);
return self::$otra;
}
else
throw new CDbException(Yii::t('yii','Active Record requires a "db" CDbConnection application component.'));
}
}
}
?>
Hola Horacio, gracias por tu respuesta.
Me gustaría preguntarte algo mas, la clase que tu llamas ECActiveRecord donde pones el script de esta clase, es decir el codigo que me pasaste en tu segundo comentario.
Gracias.
lo puedes poner en la carpeta models
o en components y luego importarla en el config/main.php
...
'import'=>array(
...
'application.components.*',
...
[edit]
o en extensions
yo la puse en models