[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Antonio Ricardo Ferreira de Souza
Criador Antonio Ricardo Ferreira de Souza 28/06/2021

Bom dia, Carlos!

Tenho uma aplicação em Laravel, este sistema foi desenvolvido em 2018 e venho atualizando ela desde então, atualmente já atualizei para a versão 8.40 do Laravel e entrei em contato com você pelo instagram.

Hoje, minha dúvida é a seguinte, qual seria a melhor abordagem para transformar esta minha app em multi tenancy, levando em consideração de já ser uma aplicação desenvolvida.

Seguindo os cursos aqui, qual seria o melhor pra eu aplicar, pois preciso atualizar urgente para multi tenancy.

Manager Carlos Ferreira 28/06/2021

Olá, Antonio!
Tudo bem?

Para que eu consiga te ajudar a identificar qual o melhor modelo vai se aplicar ao seu sistema, preciso de mais detalhes, como quais funcionalidades o sistema possui, tipos de clientes e etc.

De qualquer forma vou resumir aqui:
Tem um sistema com clientes desproporcionais? Tipo Magalu (gigante) e seu Zé? Vai de multi-database, porque a quantidade de tráfego da Magalu é desproporcional ao seu Zé.

O seu sistema vai ter milhares de clientes, mas, esses clientes não terão uma disparidade tão grande de registros e utilização? Vai de single database.

Seus clientes do projeto se encaixa nos dois modelos acima?
Combina os dois modelos, multi e single database.

---------

Enfim, me resuma um pouco dos seus clientes e modelo de negócio que indico um caminho mais preciso, e mais te digo os passos iniciais para conseguir implementar o modelo adequado.

Carlos Ferreira
Criador Antonio Ricardo Ferreira de Souza 28/06/2021

Fala Carlos,  

 

Então meu sistema é um ERP que entrega uma plataforma de Ecommerce ou Delivery online para meus clientes.
Já estou implementando aqui pelo curso o singledatabase, justamente pq eu quero trabalhar com subdomínio.
Mas ficou claro esta questão da proporção do meu cliente, acredito que ao finalizar aqui o curso eu tbm posso mudar pra ser multidatabase sem muito problema né?

Mas os clientes são de médio e pequeno porte, acho que single vai atender.

 

 

Antonio Ricardo Ferreira de Souza
Manager Carlos Ferreira 28/06/2021

Sim, creio que o modelo single database vai te atender.

Sim, o multi-database você pode implementar depois.

----

Está conseguindo incluir as novas colunas de tenant_id nas tabelas através de novos arquivos de migrations?
(https://blog.especializati.com.br/alterar-tabela-migrations-laravel-sem-perder-dados/)

Carlos Ferreira
Criador Antonio Ricardo Ferreira de Souza 28/06/2021

Já consegui incluir o tenant id em todas as migrações, não me preocupei com os dados por que fiz um fork do projeto, agora já estou na parte pra lidar com o tenant principal e quero automatizar ao máximo o processo de contratação do sistema.

 

Você conhece alguma ferramenta boa de onboarding?

Antonio Ricardo Ferreira de Souza
Criador Antonio Ricardo Ferreira de Souza 28/06/2021

Reparei agora que ao tentar criar um middleware ou rodar qlq comando do artisan estou tomando um erro aqui no managertenant:

php artisan make:middleware Tenant\\CheckSubDomainMainMiddleware

 

   ErrorException 

 

  Trying to get property 'id' of non-object

 

  at app/Tenant/ManageTenant.php:25

     21▕ 

     22▕     public function identify()

     23▕     {

     24▕         $tenant = $this->tenant();

  ➜  25▕         return $tenant->id;

     26▕     }

     27▕ }

 

  1   app/Tenant/ManageTenant.php:25

      Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Trying to get property 'id' of non-object", "/Users/antonioricardo/Desktop/Dev/pedlix_app/app/Tenant/ManageTenant.php", [])

 

  2   app/Tenant/Scopes/TenantScope.php:15

      App\Tenant\ManageTenant::identify()

 

 

Ele vai tentar acessar o escopo?

Antonio Ricardo Ferreira de Souza
Criador Antonio Ricardo Ferreira de Souza 28/06/2021

Uma outra dúvida que tive é, como poderia fazer pra, ter a aplicação central ou seja landing page, criação de tenant ficar sem subdomínio e os tenants usarem subdomínio.

Ex:

Aplicação central rodar no https://meusistema.com.br

tenant1.meusistema.com.br
tenant2.meusistema.com.br

Aqui na validação no middleware você fez como o central utilizando subdomínio né, eu até poderia fazer pro www.
Mas se tivesse outra alternativa.

Antonio Ricardo Ferreira de Souza
Manager Carlos Ferreira 28/06/2021

Olá, Antonio!

Tem o projeto no GitHub? Preciso ver o código com detalhes para conseguir te ajudar a identificar onde está errando.

Mas, para evitar esse erro no método identify pode verificar se está rodando algum comando em CLI:
if ($this->app->runningInConsole()) return;

------

Sobre a sua última pergunta, o ideial seria controlar no middleware mesmo, e usar o www. para identificar a home (landing).

Carlos Ferreira
Criador Antonio Ricardo Ferreira de Souza 28/06/2021

Tenho no Github mas está privado.

Você dá alguma consultoria?

Tinha mais algumas coisas que eu precisava de uma luz aqui que acho que em uma consultoria rápida eu conseguiria alinhar.

 

Antonio Ricardo Ferreira de Souza
Manager Carlos Ferreira 28/06/2021

Consultoria mesmo é complicado, por conta do tempo mesmo.

Faz o seguinte amigo, envia os detalhes da sua dúvida (+ número do suporte 1847), se tiver dentro do escopo dos cursos te ajudo sem custos: [email protected]

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!