Installation

Laravel 6.0 or higher is needed.

Require the package via composer

First you need to require the package using composer:

composer require stancl/tenancy

Automatic installation

To install the package, simply run

php artisan tenancy:install

This will do all the steps listed in the Manual installation section for you.

You will be asked if you want to store your data in a relational database or Redis. Continue to the next page (Storage Drivers) to know what that means.

Manual installation

If you prefer installing the package manually, you can do that too. It shouldn't take more than a minute either way.

Setting up middleware

Now open app/Http/Kernel.php and make the package's middleware classes top priority, so that they get executed before anything else, making sure things like the database switch connections soon enough:

protected $middlewarePriority = [
    \Stancl\Tenancy\Middleware\PreventAccessFromTenantDomains::class,
    \Stancl\Tenancy\Middleware\InitializeTenancy::class,
    // ...
];

Add the \Stancl\Tenancy\Middleware\PreventAccessFromTenantDomains::class middleware to all route groups you use, so that's probably 'web' and possibly 'api':

protected $middlewareGroups = [
    'web' => [
        \Stancl\Tenancy\Middleware\PreventAccessFromTenantDomains::class,
        // ...
    ],
    // ...
]

Creating routes

The package lets you have tenant routes and "exempt" routes. Tenant routes are your application's routes. Exempt routes are routes exempt from tenancy — landing pages, sign up forms, and routes for managing tenants.

Routes in routes/web.php are exempt, while routes in routes/tenant.php have the tenancy middleware automatically applied to them.

So, to create tenant routes, put those routes in a new file called routes/tenant.php.

Configuration

Run the following:

php artisan vendor:publish --provider='Stancl\Tenancy\TenancyServiceProvider' --tag=config

This creates a config/tenancy.php. You can use it to configure how the package works.

Configuration is explained in detail on the Configuration page.