, (*1)
Office Building
, (*2)
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+, (*3)
Installation
Install Office Building via Composer:, (*4)
composer require yanhaoli/office-building
For laravel >= 5.5 that's all, thanks to Package Discovery., (*5)
For laravel <= 5.5, you have to add Yanhaoli\OfficeBuilding\Providers\OfficeBuildingServiceProvider
to your config/app.php
providers array:, (*6)
Yanhaoli\OfficeBuilding\Providers\OfficeBuildingServiceProvider::class,
Usage
-
Config the basis
Firstly you have to publish the config file with the following command:, (*7)
php artisan vendor:publish --provider="Yanhaoli\OfficeBuilding\Providers\OfficeBuildingServiceProvider"
Now checkout config/officebuilding.php
and modify it by your needs., (*8)
-
Open a new Office for your customer, (*9)
``` php
<?php, (*10)
namespace App\Http\Controller;
use OfficeBuilding;
use App\Company;, (*11)
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);
}
}
```, (*12)
-
Handle request for a specific office. Ex, Get all employees of that office, (*13)
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., (*14)
<?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);
}
}
Contributing
Welcome any contributions for issue fix or functionality improvement., (*15)
Security Vulnerabilities
If you discover a security vulnerability , please shot me an email at hi@yanhaoli.com., (*16)
License
The MIT License (MIT). Please see MIT license for more information., (*17)