O pacote `archtechx/tenancy` é uma ferramenta flexível e poderosa para implementar multilocação em aplicações Laravel. Aqui estão alguns recursos principais e diferenças em comparação com outros pacotes como `spatie/laravel-multitenancy`:
Principais recursos do `archtechx/tenancy`:
1. Multilocação automática: o pacote configura automaticamente a multilocação sem exigir alterações significativas no código. Ele lida com conexões de banco de dados, caches, sistemas de arquivos, filas e armazenamentos Redis para cada locatário[3].
2. Arquitetura Baseada em Eventos: O pacote usa uma arquitetura orientada a eventos, permitindo personalização e flexibilidade no tratamento de eventos relacionados à locação[3].
3. Locação de banco de dados único ou múltiplo: suporta modelos de locação de banco de dados único e de vários bancos de dados. Para locação de vários bancos de dados, ele fornece características de modelo para definir o escopo dos modelos para o locatário atual[3].
4. Integração com outros pacotes: O pacote se integra perfeitamente com outros pacotes do Laravel, incluindo o Laravel Nova, que pode ser usado para gerenciar recursos de locatários[3].
5. Testabilidade: O pacote foi projetado para ser altamente testável, tornando mais fácil garantir que sua implementação de multilocação seja exaustivamente testada[3].
6. Personalização: O pacote oferece amplas opções de personalização por meio de sua arquitetura baseada em eventos e características de modelo, permitindo que os desenvolvedores o adaptem às suas necessidades específicas[3].
Instalação e início rápido:
1. Instalação: O pacote pode ser instalado usando o Composer: `composer require stancl/tenancy`.
2. Início rápido: o pacote inclui um tutorial de início rápido que orienta você na configuração da locação de vários bancos de dados e na identificação de domínio. Este tutorial está disponível na página de documentação do pacote[4].
Comparação com `spatie/laravel-multitenancy`:
- Configuração automática: Ambos os pacotes oferecem opções de configuração automática, mas `archtechx/tenancy` é mais abrangente em sua configuração automática, lidando com mais aspectos de multilocação imediatamente.
- Arquitetura Baseada em Eventos: `archtechx/tenancy` usa uma arquitetura orientada a eventos, que fornece mais flexibilidade e opções de personalização em comparação com `spatie/laravel-multitenancy`.
- Integração com Outros Pacotes: Ambos os pacotes se integram bem com outros pacotes do Laravel, mas `archtechx/tenancy` é mais explícito em seu suporte a pacotes como o Laravel Nova.
- Testabilidade: Ambos os pacotes são projetados para serem testáveis, mas `archtechx/tenancy` é mais focado na testabilidade e fornece mais ferramentas para garantir testes completos.
Em resumo, `archtechx/tenancy` oferece uma solução mais abrangente e flexível para multilocação no Laravel, com amplas opções de customização e melhor integração com outros pacotes. No entanto, a escolha entre os dois pacotes depende, em última análise, dos requisitos e necessidades específicas do seu projeto.
Citações:[1] https://stackoverflow.com/questions/74005556/archtechx-tenancy-vs-spatie-laravel-multitenancy
[2] https://github.com/archtechx/tenancy/actions
[3] https://tenancyforlaravel.com
[4] https://tenancyforlaravel.com/docs/v3/quickstart/
[5] https://github.com/stancl/tenancy/releases