Office Building is an easy to use Laravel package to help you build the Multi-tenant SaaS with database-per-tenant. Support Laravel 5.3+
Install Office Building via Composer:
composer require yanhaoli/office-building
For laravel >= 5.5 that's all, thanks to Package Discovery.
For laravel <= 5.5, you have to add Yanhaoli\OfficeBuilding\Providers\OfficeBuildingServiceProvider
to your config/app.php
providers array:
Yanhaoli\OfficeBuilding\Providers\OfficeBuildingServiceProvider::class,
-
Config the basis Firstly you have to publish the config file with the following command:
php artisan vendor:publish --provider="Yanhaoli\OfficeBuilding\Providers\OfficeBuildingServiceProvider"
Now checkout
config/officebuilding.php
and modify it by your needs. -
Open a new Office for your customer
<?php namespace App\Http\Controller; use OfficeBuilding; use App\Company; class CompanyController extends Controller { public function create(Request $request) { $company_name = $request->input('name'); $database_name = OfficeBuilding::addOffice($company_name); $company = new Company; $company->name = $company_name; $company->database_name = $database_name; $company->save(); return response('created', 201); } }
-
Handle request for a specific office. Ex, Get all employees of that office
use OfficeBuilding::visit method to switch database connection to a specific office, with a callback method to handle request, the connection will be revert to the previous status after task completed.
<?php namespace App\Http\Controller; use OfficeBuilding; use App\OfficeBuilding\Employee; class OfficeEmployeeController extends Controller { public function browse(Request $request, $office_id) { $employees = OfficeBuilding::visit($office_id, function(){ return Employee::all(); }); return response($employees, 200); } }
Welcome any contributions for issue fix or functionality improvement.
If you discover a security vulnerability , please shot me an email at [email protected].
The MIT License (MIT). Please see MIT license for more information.