[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Rangel
Criador Rangel 11/01/2021

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.

Manager Carlos Ferreira 11/01/2021

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

Carlos Ferreira
Criador Rangel 11/01/2021

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.

Rangel
Manager Carlos Ferreira 11/01/2021

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.

Carlos Ferreira
Criador Rangel 11/01/2021

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)

Rangel
Manager Carlos Ferreira 11/01/2021

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.

Carlos Ferreira
Criador Rangel 11/01/2021

Ou então usa uma conexão padrão...

O que vc acha?

Rangel
Manager Carlos Ferreira 11/01/2021

Sim, até criar a sessão usa a conexão default

Carlos Ferreira
Criador Rangel 11/01/2021

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

Rangel
Manager Carlos Ferreira 11/01/2021

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.

Carlos Ferreira
Criador Rangel 11/01/2021

Ok. E-mail enviado.

Rangel
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!