Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

cambiar de base de datos

Estas en el tema de cambiar de base de datos en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos tengo un problema que no he podido resolver con zend framework 1.7.2 lo que pasa es l o siguiente tengo esta configuracion ...
  #1 (permalink)  
Antiguo 26/10/2009, 11:25
Avatar de poloche  
Fecha de Ingreso: abril-2006
Ubicación: cochabamba
Mensajes: 93
Antigüedad: 18 años
Puntos: 1
Mensaje cambiar de base de datos

Hola a todos tengo un problema que no he podido resolver con zend framework 1.7.2 lo que pasa es l o siguiente

tengo esta configuracion del bottstrap

Código PHP:
date_default_timezone_set('America/Argentina/Buenos_Aires'); 
set_include_path './' PATH_SEPARATOR .  
                    
'../application/default/models/'PATH_SEPARATOR 
                    
'../application/default/models/beans/'PATH_SEPARATOR 
                    
'../application/default/views/'PATH_SEPARATOR .
                    
'../application/default/utils/'PATH_SEPARATOR .
                    
'../library/'PATH_SEPARATOR .
                    
'../library/Core/'PATH_SEPARATOR .
                    
'../library/ZendX/'PATH_SEPARATOR .
                    
'../application/default/forms/' PATH_SEPARATOR .
                    
'../application/default/helpers/' PATH_SEPARATOR .
                    
'../config/' PATH_SEPARATOR 
                    
get_include_path () );
                    
require_once 
'Initializer.php';
require_once 
"Zend/Loader.php";

Zend_Loader::registerAutoload ();

$frontController Zend_Controller_Front::getInstance ();

$frontController->registerPlugin ( new Initializer 'development' ) );

$frontController->dispatch (); 
y en el plugin inizializer existe este metodo para inicializar la base de datos

Código PHP:
public function initDb() {
        if (
$this->_config->enable_database) {
            
$fileLogger Zend_Registry::get 'fileLogger' );

            
$options = array (Zend_Db::AUTO_QUOTE_IDENTIFIERS => true );
                        
print_r($this->getInvokeArg('name'));
            try {
                
$db = new Zend_Db_Adapter_Pdo_Pgsql 
                        array (
'host' => $this->_config->database->host
                                
'username' => $this->_config->database->user
                                
'password' => $this->_config->database->pass
                                
'dbname' => $this->_config->database->name
                                
'options' => $options ) );
                
$db->getConnection ();
                
Zend_Db_Table::setDefaultAdapter $db );
                
Zend_Registry::set "database"$db );
            } catch ( 
Zend_Db_Adapter_Exception $e ) {
                if (
$this->_config->enable_file_logger) {
                    
$fileLogger->log 'Database Error: ' $e->getMessage (), );
                }
            } catch ( 
Zend_Exception $e ) {
                if (
$this->_config->enable_file_logger) {
                    
$fileLogger->log 'Error: ' $e->getMessage (), );
                }
            }
            
        }
    
    } 
lo que quisiera es pasarle un parametro al initializer para poder seleccionar una base de datos diferente segun la preferencia del usuario

es decir en una vista cuando el usuario le de a clic en CBBA seleccione la base de datos de CBBA y cuando le de a STZ seleccione esta base de datos, para ello debo tener los datos necesarios en un array de bases de datos.

ese precisamente es mi problema yo entiendo que zend al hacer Zend_Db_Table::setDefaultAdapter ( $db );
Zend_Registry::set ( "database", $db );

esta poniendo por defecto esa base de datos y que en los modelos se utilizara esta base de datos para las consultas
pero no se como hacerlo estare agradecido por la ayuda prestada
__________________
no estare lejos, por que siempre estare junto a ti
  #2 (permalink)  
Antiguo 26/10/2009, 13:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: cambiar de base de datos

Recuerda que PHP es un lenguaje stateless, por lo que en cada request se ejecuta tu bootstrap, ahora para implementar lo que quieres es simple, solo estable una bdd por defecto, y haz una pagina donde puedas seleccionar que bdd usar y guardas en una sesión que bdd esta usando o en algún otro medio persistente (un archivo, base de datos, etc.).

Entonces solo es cuestión de comparar (ejemplo):
Código PHP:
Ver original
  1. $config = Peristence::getDBConfig();
  2. if (!$config) {
  3.        $config = $DBDefaultConfig;
  4. }
  5.  
  6. // Inicias tu BDD y pones los datos.

Saludos.

Última edición por GatorV; 28/10/2009 a las 08:43
  #3 (permalink)  
Antiguo 27/10/2009, 16:10
Avatar de poloche  
Fecha de Ingreso: abril-2006
Ubicación: cochabamba
Mensajes: 93
Antigüedad: 18 años
Puntos: 1
Respuesta: cambiar de base de datos

una respuesta muy acerdata gracias logre resolverlo implementando con xml
__________________
no estare lejos, por que siempre estare junto a ti
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:20.