Uso de una segunda conexión de BD en Zend
Publicado en 17 septiembre, 2012
Probado en existravel.
Paso 1: Config
Creamos un apartado en el config con los datos de conexión. Tiene que ser un usuario que tenga permisos en esa base de datos.
[dbAdapterGISold] db.adapter = Mysqli db.params.adapterNamespace = Alsur_Db_Adapter db.params.host = localhost db.params.username = XXX db.params.password = YYY db.params.dbname = ZZZ db.params.port = 3306
Cambiar solo el titulo, el nombre del resto de variables deben quedar como el ejemplo.
Paso 2: Registro de la BD
En existravel este paso se hace en la clase xv_Plugins_Database en la función dispatchLoopStartup, en apps la clase se llama Domain_Plugin_Database. Es un plugin que se registra en el index.php. Añadimos esto al final de la función.
if($config->dbAdapterGISold){
$dbGISold = Zend_Db::factory($config->dbAdapterGISold->db);
$dbGISold->query("SET NAMES 'utf8'");
Zend_Registry::set('dbGISold', $dbGISold);
}
Paso 3: Añadir a la clase
La clase que usamos para las base de datos es Alsur_Db_Table. En ella añadimos un constructor para que cree una variable de la segunda BD.
public function __construct(){
parent::__construct();
if(Zend_Registry::isRegistered('dbGISold')){
$this->_dbGISold = Zend_Registry::get('dbGISold');
}
}
A partir de aquí en cada clase que herede de Alsur_Db_Table tenemos disponible la variable $this->_dbGISold para hacer conexiones a la segunda BD.

¿Algo que comentar?
Lo siento, debes estar conectado para publicar un comentario.