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
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.
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
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, // ... ];
\Stancl\Tenancy\Middleware\PreventAccessFromTenantDomains::class middleware to all route groups you use, so that's probably
'web' and possibly
protected $middlewareGroups = [ 'web' => [ \Stancl\Tenancy\Middleware\PreventAccessFromTenantDomains::class, // ... ], // ... ]
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/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
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.