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.


Sin respuestas to "Uso de una segunda conexión de BD en Zend"


    ¿Algo que comentar?