Una aplicación, multiples bases de datos CakePHP

Tengo que lanzar un web para varios países y aprovecharé la potencia de CakePHP para realizar una sola plataforma con varias bases de datos. Cada base de datos almacenará el contenido local de cada web.

Lo que he hecho es en /(app)/config/bootstrap.php incluir mi código de configuración personalizado. Ver funcionalidad del boostrap

Para determinar y estandarizar la url que me llega realizo la siguiente comprobación

$datos_dominio = explode(".",$_SERVER['HTTP_HOST']);
if (in_array("www",$datos_dominio))
{
$dominio ='';
}
else
{
$dominio = 'www.';
}

for($i=0;$i < count($datos_dominio);$i++)
{
if($i == 0)
{
$dominio .= $datos_dominio[$i];
}
else
{
$dominio .= '.'.$datos_dominio[$i];
}
}
?>

Con el dominio que he obtenido lo paso por un switch case y la variable final con el valor de la base de datos la guardo en una constante que usaré mas adelante.

switch ($dominio)
{
case 'www.cake.loc':
$bbdd = 'default';
break;
case 'www.cake.loc.uk':
$bbdd = 'default_uk';
break;
case 'www.cake.loc.mx':
$bbdd = 'default_mx';
break;
default: $bbdd = 'default';
}
define('BBDD',$bbdd);

Posteriormente en mi modelo seleccionaré la base de datos que se ha guardado automaticamente en la constante BBDD

Ejemplo de mi /(app)/models/contenido.php

class Contenido extends AppModel
{
var $name = 'mos_content'; // nombre de la tabla que estoy usando
var $useDbConfig = BBDD; // conexión a la base de datos que he obtenido automaticamente
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *