Múltiples esquemas de conexión a Base de Datos en CakePHP
Posted by faemino | Filed under CakePHP
A la hora de pasar una web de desarrollo a producción o para “testearla” en el servidor final hemos de modificar algún valor en nuestro archivo core.php y poner los valores específicos del servidor en el database.php.
Existen muchas maneras de conseguir agilizar un poco este proceso y una de ellas que me ha gustado a la hora de no tener que modificar el archivo database.php es añadiendo un contructor a la clase DATABASE_CONFIG (dentro de database.php) que en función de algún parámetro haga que nuestra aplicación use una o otra conexión:
function __construct() {
switch(Configure::read('WebApp.mode')) {
case "Production":
$this->default = $this->production;
break;
default:
case "Develop":
$this->default = $this->develop;
break;
}
}
El siguiente paso será definir $this->develop y $this->production en la clase y asignar $this->default a null, quedando nuestra clase de la siguiente manera:
class DATABASE_CONFIG {
var $default = null;
var $production = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '',
'login' => '',
'password' => '',
'database' => '',
'prefix' => '',
);
var $develop = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '',
'login' => '',
'password' => '',
'database' => '',
'prefix' => '',
);
function __construct() {
switch(Configure::read('WebApp.mode')) {
case "Production":
$this->default = $this->production;
break;
default:
case "Develop":
$this->default = $this->develop;
break;
}
}
}
Sólo nos queda declarar la variable de configuración WebApp.mode en nuestro archivo core.php o en bootstrap.php, tal que así:
Configure::write('WebApp.mode','Develop'); //'Production'
Tags: Base de Datos