Pues no funciona.
Se puede configurar sólo una vez el adaptador por defecto.
El manual dice lo siguiente : "setting a default adapter is limited to a single adapter instance". Por eso, cada vez que configuraba una segunda instancia, ya sea en un segundo bootstrap de un módulo, o en el archivo application.ini, funcionaba sólo la primera instancia.
Ref : http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.constructing.defa ult-adapter
Finalmente, di con la forma de indicar en cada modelo el adaptador a usar.
Leí este artículo : http://jaybill.com/2007/09/12/using-the-zend-framework-with-multiple-databases/
Pero lo hice con algunos cambios :
1. En el bootstrap cree la siguiente función :
Código PHP:
protected function _initDatabases()
{
$config = array(
'db' => array(
'acceso' => array(
'adapter' => 'pdo_mysql',
'params' => array(
'host' => 'localhost',
'username' => 'user',
'password' => 'pass',
'dbname' => 'dbacceso'
),
'default' => true
),
'sistema' => array(
'adapter' => 'pdo_mysql',
'params' => array(
'host' => 'localhost',
'username' => 'user',
'password' => 'pass',
'dbname' => 'dbsistema'
)
)
)
);
$databases = new Zend_Config($config);
$dbAdapters = array();
foreach($databases->db as $config_name => $db){
$dbAdapters[$config_name] = Zend_Db::factory($db->adapter, $db->params->toArray());
if((boolean)$db->default){
Zend_Db_Table::setDefaultAdapter($dbAdapters[$config_name]);
}
}
Zend_Registry::set('dbAdapters', $dbAdapters);
}
2. Cree la clase abstracta "App_Db_Table_Abstract" extendiendo "Zend_Db_Table_Abstract", de la siguiente forma :
Código PHP:
abstract class App_Db_Table_Abstract extends Zend_Db_Table_Abstract
{
function App_Db_Table_Abstract($config = null){
if(isset($this->_use_adapter)){
$dbAdapters = Zend_Registry::get('dbAdapters');
$config = ($dbAdapters[$this->_use_adapter]);
}
return parent::__construct($config);
}
}
3. Finalmente, en cada modelo que uso agregué una variable que indica el adaptador a usar :
Código PHP:
class Sistema_Model_Proveedor extends App_Db_Table_Abstract
{
protected $_name = 'proveedores';
protected $_primary = 'id';
protected $_use_adapter = 'sistema';
}
Con eso solucioné el problema.
No sé si exista algo mejor, pero por ahora lo usaré ya que funciona bien y es fácil de quitar en caso que encuentre una forma mejor.
Si tienen alguna sugerencia sobre como optimizar la propuesta actual, bienvenida será!.
Saludos !!