1
resposta

Multi-Databases

Olá a todos, tenho uma duvida bem grande e espero que me ajudem.

Eu possuo uma aplicação em PHP sem nenhuma framework. E nesta eu uso um esquema de multi-database, funciona assim:

Tenho três empresas que usam o mesmo sistema, cada uma usa uma base de dados própria, e uma base na qual as três compartilham. Então ao logar, usando a base de dados compartilhada, eu monto a sessão e nela informo qual base dele ser usada e a partir dai o usuário acessa apenas os dados de sua respectiva base.

Bom o sistema cresceu, tenho em média 230 clientes e estou enfrentando problemas com migrações, internacionalização (surgiu o primeiro cliente no exterior) e etc. Por isso, para facilitar a codificação estou trocando o sistema para o CakePHP. Mas em relação a conexão estou tendo dificuldades em fazer pois uso o ACL e este esta na base compartilhada.

Alguém tem uma luz?

Agradeço desde já.

1 resposta

Oi Fabio, tudo bom?

Você pode adicionar quantos databases quiser no seu cake lá no arquivo app/config/database.php, por exemplo:

class DATABASE_CONFIG {
    public $default = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'seu usuario',
        'password' => 'sua senha',
        'database' => 'db1',
        'prefix' => '',
        //'encoding' => 'utf8',
    );

    public $db2 = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'seu usuario',
        'password' => 'sua senha',
        'database' => 'db2',
        'prefix' => '',
        //'encoding' => 'utf8',
    );
}

Assim, você tem duas conexões prontas para usar =)

Você pode escolher qual das duas você quer usar adiconando o atributo useDbConfig

    public $useDbConfig = 'db2'; // usa a database 2

Você também pode alterar esse atributo no controller através do métod setDataSource('database')

Assim, você consegue escolher, em tempo de execução, qual database será selecionada pra sua DataSource =)

Para saber mais sobre DataSources e quais bancos são compativeis, você pode dar uma olhada aqui na propria documentação do cake:

https://book.cakephp.org/2.0/en/models/datasources.html

Qualquer dificuldade, compartilha com a gente

Bons estudos!