Alternancia de DB - Multi Tenancy
[Concluído]
Carlos, boa noite.
Estou implementando um projeto (médio porte) e usarei o multi tenancy. A questão é o seguinte: Não gostaria de usar como critério de alternancia de DB o sub-domínio e nem domínios... Há alguma outra sugestão por sua parte?
Valeu e parabens pelo conteúdo e qualidade.
Olá, Rangel!
Tudo bem?
Primeiramente, obrigado pelo feedback. Gratidão!
Há sim, você pode relacionar o tenant diretamente com o usuário, mantendo uma coluna tenant_id na tabela users, ou até mesmo trabalhar com um relacionamento N:N
Esse curso aqui pode te abrir a mente para o que precisa: https://academy.especializati.com.br/curso/laravel-multi-tenancy-single-database
Certo Carlos, irei ver esse curso.
Mas eu não queria single db e sim milti.
Pensei algo usando uma sessão, tipo:
www.dominio.com/clientex
através do clientex o sistema faria a verificação e conexão com o DB competente.
Você pode pegar a ideia do curso que indiquei e aplicar neste modelo multi-database, ou ainda se te atender, você pode combinar as duas implementações e no mesmo sistema trabalhar com single e multi-database.
Assim funciona bem para identificar o tenant também:
www.dominio.com/clientex
MAS, está setando em um rota, e precisa passar o tenant em todas suas rotas/parâmetros de URL;
Uma outra alternativa amigo, seria criar uma sessão com o tenant que deseja trabalhar e usar a sessão para identificar o tenant.
Sobre a ideia de criar a sessão com o tenancy...
eu faria a verificação se existe a sessão do tenancy na classe managerTenant ? (onde eu setaria a conexão e faria a nova)
Exatamente, primeiro cria a sessão com o tenant (pode criar de N formas), umas delas é através da URL www.seudominio.com.br/tenant-identify (nessa rota cria a sessão com esse tenat)
E no seu ManagerTenant você recupera a sessão, se ela existir alterna a conexão com o banco, se não existir, pode usar um middleware para forçar a criar a sessão.
Ou então usa uma conexão padrão...
O que vc acha?
Sim, até criar a sessão usa a conexão default
Carlos. Boa noite.
Segui a ideia acima. Mas não deu muito certo.
Não consigo criar uma session no ManagerTenant, e quando testo a conexão com o novo BD aparece a conexão default.
A validação é feita pelo id do cliente e a url de verificação é: 127.0.0.1:8000/verifica/{id}
Quando o cliente existe, depois da nova conexão, ele é encaminhado para o view session.
Segue o código para análise e teste.
https://github.com/edielrangel/multDb
Grato
Olá, Rangel!
Como a sua pergunta é algo muito particular, vou pedir que encaminhe ela com todos os detalhes para [email protected] (com o identificador do chamado), porque assim posso te ajudar de forma mais direcionada.
Ok. E-mail enviado.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!