Cambiar de base de datos en Zend Framework

Esta es una discusión para el tema Cambiar de base de datos en Zend Framework en el foro Lenguajes de Programación, bajo la categoría Área Administrativa; 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  (  ...
Página:


Resultados 1 al 2 de 2

Temas similares

  1. Por disken en el foro vBadvanced CMPS
  2. Base da datos? Respuestas: 3
    Por in0x en el foro vBulletin 3 - Preguntas, Problemas y Soluciones
  3. Base de datos Respuestas: 0
    Por daniel_21 en el foro vBulletin 3 - Preguntas, Problemas y Soluciones
  4. Base de datos Respuestas: 9
    Por Javincy en el foro vBulletin 3 - Preguntas, Problemas y Soluciones
  5. Por tresor en el foro vBulletin 3 - Preguntas, Problemas y Soluciones
  1. #1
    Miembro Array
    Fecha de ingreso
    07 oct, 09
    Mensajes
    4
    Gustado
    0 Veces
    Me Gustan
    0 Veces

    Predeterminado Cambiar de base de datos en Zend Framework

    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

  2. #2
    Miembro especial Miembro de platino Array Avatar de Daniel B.
    Fecha de ingreso
    25 abr, 09
    Ubicación
    cl 56 Nicolas de Federman, Apt 402
    Mensajes
    312
    Gustado
    16 Veces
    Me Gustan
    2 Veces

    Predeterminado Re: Cambiar de base de datos en Zend Framework

    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:
    $config Peristence::getDBConfig();
    if (!
    $config) {
           
    $config $DBDefaultConfig;
    }
     
    // Inicias tu BDD y pones los datos. 
    Adiós, igual esto es una cita!