An open API service indexing awesome lists of open source software.

https://github.com/yanhao-li/office-building

🏢 Easy to use SaaS Multitenancy solution for Laravel
https://github.com/yanhao-li/office-building

composer laravel multitenancy multitenant php separate-database

Last synced: 2 months ago
JSON representation

🏢 Easy to use SaaS Multitenancy solution for Laravel

Awesome Lists containing this project

README

          



# Office Building
[![Travis](https://img.shields.io/travis/yanhao-li/office-building.svg)](https://travis-ci.org/yanhao-li/office-building) ![license](https://img.shields.io/github/license/mashape/apistatus.svg) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md#pull-requests)

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+

## Installation

Install Office Building via Composer:

```bash
composer require yanhaoli/office-building
```
For laravel >= 5.5 that's all, thanks to [Package Discovery](https://laravel.com/docs/5.5/packages#package-discovery).

For laravel <= 5.5, you have to add `Yanhaoli\OfficeBuilding\Providers\OfficeBuildingServiceProvider` to your `config/app.php` providers array:
```php
Yanhaoli\OfficeBuilding\Providers\OfficeBuildingServiceProvider::class,
```

## Usage

1. Config the basis
Firstly you have to publish the config file with the following command:

```php
php artisan vendor:publish --provider="Yanhaoli\OfficeBuilding\Providers\OfficeBuildingServiceProvider"
```

Now checkout `config/officebuilding.php` and modify it by your needs.

2. Open a new Office for your customer

``` php
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);
}
}
```

3. 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