PHPackages                             multiplier/laravel-tenant-subdomain - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. multiplier/laravel-tenant-subdomain

ActiveLibrary[Database &amp; ORM](/categories/database)

multiplier/laravel-tenant-subdomain
===================================

Pacote para facilitar criação de rotas e troca de banco de dados baseado no subdominio da sua aplicação

v1.0.8(6y ago)136MITPHP

Since Jan 3Pushed 6y agoCompare

[ Source](https://github.com/LucienCorreia/laravel-tenant-subdomain)[ Packagist](https://packagist.org/packages/multiplier/laravel-tenant-subdomain)[ RSS](/packages/multiplier-laravel-tenant-subdomain/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (2)Dependencies (2)Versions (10)Used By (0)

Laravel Tenant Subdomínio
=========================

[](#laravel-tenant-subdomínio)

Este pacote irá auxiliar na organização de clientes em subdomínios usando Laravel.

Instalação
----------

[](#instalação)

Execute em seu terminal

```
    composer require multiplier/laravel-tenant-subdomain

```

adicione o provider e o facade em `config/app.php`:

```
'providers' => [
    // outros providers
    Multiplier\Tenant\Providers\TenantServiceProvider::class,
],

'aliases' => [
    // outros aliases
    'Tenant' => Multiplier\Tenant\Facades\Tenant::class,
]
```

adicione o middleware em `app/Http/Kernel.php`

```
protected $routeMiddleware = [
    // outros middlewares
    'tenant.database' => \Multiplier\Tenant\Middlewares\TenantDatabase::class
];
```

Após isso, abra seu console e execute: `php artisan vendor:publish`, modifique o arquivo `config/tenant.php` para sua necessidade, abra seu arquivo `.env` e adicione:

```
APP_HOST=domain.com
TENANT_SUBDOMAIN_ARGUMENT=_account_

```

Uso
---

[](#uso)

para gerar rotas de subdominio, utilize da seguinte forma:

```
// Tenant::getFullDomain() retorna algo como '{_account_}.domain.com'

Route::group(['domain' => Tenant::getFullDomain()], function () {
    Route::get('subdomain-teste/{id}', ['as' => 'subdomain-teste', function($subdomain, $id){
        return route('subdomain-teste', ['123']);
    }]);
});
```

para gerar rotas para a aplicação principal (que não seja subdominio), utilize da seguinte forma

```
// Tenant::getDomain() retorna algo como 'domain.com'

Route::group(['domain' => Tenant::getDomain()], function () {
    Route::get('domain-teste/{id}', ['as' => 'domain-teste', function($id){
        return route('domain-teste', ['123']);
    }]);
});

// isso impede que rotas do dominio possam ser acessadas através do subdominio
```

Carregando as configurações de banco de acordo com o subdominio
---------------------------------------------------------------

[](#carregando-as-configurações-de-banco-de-acordo-com-o-subdominio)

os arquivos de configurações de banco serão lidos por padrão, dentro da pasta `config/tenant`, com o exemplo de conteudo:

```
return [
    'driver'    => 'mysql',
    'host'      => 'host',
    'database'  => 'db_subdomain',
    'username'  => 'user_subdomain',
    'password'  => 'user_password',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
    'strict'    => false,
];
```

o arquivo é lido e adicionado como conexão padrão `tenant`, isso é feito via Middleware, em todas as rotas que irão utilizar base de dados própria, use o middleware `tenant.database`:

```
Route::group(['domain' => Tenant::getFullDomain(), 'middleware' => ['tenant.database']], function () {
    Route::get('domain-teste/{id}', ['as' => 'domain-teste', function($id){
        return route('domain-teste', ['123']);
    }]);
});
```

Supondo que o usuário acesse `http://beltrano.domain.com`, a configuração a ser carregada deverá estar em `/config/tenants/beltrano.php` (isso é configurável)

### Criar configurações de banco

[](#criar-configurações-de-banco)

Para criar uma nova configuração de banco, use da seguinte forma:

```
$config = [
    'foo' => 'bar'
];

Tenant::makeDatabaseConfigFile('foo', $config);
```

isso irá gerar um arquivo dentro de `config/tenants` com o nome de `foo.php` (ou como/onde for definido na configuração), com o seguinte conteúdo

```
return [
    'foo' => 'bar'
];
```

### Excluir configurações de banco

[](#excluir-configurações-de-banco)

Para excluir um arquivo de configuração, apenas execute da seguinte maneira:

```
Tenant::dropDatabaseConfigFile('foo');
```

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity69

Established project with proven stability

 Bus Factor1

Top contributor holds 86.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~223 days

Recently: every ~390 days

Total

8

Last Release

2220d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/20744377?v=4)[Lucien Risso Correia](/maintainers/LucienCorreia)[@LucienCorreia](https://github.com/LucienCorreia)

---

Top Contributors

[![dlimars](https://avatars.githubusercontent.com/u/4266198?v=4)](https://github.com/dlimars "dlimars (38 commits)")[![brunopmaia](https://avatars.githubusercontent.com/u/17571341?v=4)](https://github.com/brunopmaia "brunopmaia (4 commits)")[![bernardomacedo](https://avatars.githubusercontent.com/u/5430688?v=4)](https://github.com/bernardomacedo "bernardomacedo (1 commits)")[![vinicius73](https://avatars.githubusercontent.com/u/1561347?v=4)](https://github.com/vinicius73 "vinicius73 (1 commits)")

### Embed Badge

![Health badge](/badges/multiplier-laravel-tenant-subdomain/health.svg)

```
[![Health](https://phpackages.com/badges/multiplier-laravel-tenant-subdomain/health.svg)](https://phpackages.com/packages/multiplier-laravel-tenant-subdomain)
```

###  Alternatives

[cviebrock/eloquent-sluggable

Easy creation of slugs for your Eloquent models in Laravel

4.0k13.6M253](/packages/cviebrock-eloquent-sluggable)[tucker-eric/eloquentfilter

An Eloquent way to filter Eloquent Models

1.8k4.8M26](/packages/tucker-eric-eloquentfilter)[laravel-doctrine/orm

An integration library for Laravel and Doctrine ORM

8425.3M87](/packages/laravel-doctrine-orm)[cviebrock/eloquent-taggable

Easy ability to tag your Eloquent models in Laravel.

567694.8k3](/packages/cviebrock-eloquent-taggable)[dragon-code/laravel-data-dumper

Adding data from certain tables when executing the `php artisan schema:dump` console command

3418.6k](/packages/dragon-code-laravel-data-dumper)[dolphiq/laravel-aescrypt

AES encrypt and decrypt Eloquent attributes inspired by elocryptfive

171.7k](/packages/dolphiq-laravel-aescrypt)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
