gpopoteur / flat
Laravel 5 多租户应用程序包。
Requires
- php: >=5.4.0
- illuminate/support: 5.1.*
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-25 15:31:08 UTC
README
正在进行中!!
Laravel 5 多租户应用程序包。目前仅支持Postgresql模式和SQLite数据库。
安装
使用以下命令通过composer安装
composer require gpopoteur/flat
然后在config/app.php
文件中注册提供者
'GPopoteur\Flat\FlatServiceProvider',
之后,您就可以开始使用Flat
API了! :)
flat
使用的数据库驱动将与在config/database.php
中指定的驱动相同,即您在应用程序中使用的驱动。
用法
您可以通过Laravel IoC容器注入依赖
public function __contruct(Flat $flat){ // business logic }
或者直接使用App::make()
解析类。
$flat = App::make('GPopoteur\Flat\Flat');
创建新的Flat
要创建新的Flat(租户),只需调用Flat
类的build($name)
方法,传入新的租户名称。
$flat->build('new-tenant');
创建新的租户后,新模式不会自动迁移,要运行迁移,只需执行
$flat->migrate('new-tenant');
或者,如果一次性迁移多个租户,传递一个包含租户名称的数组
$flat->migrate(['new-tenant', 'other-tenant', 'and-another']);
更改Flats(租户)
要程序化地更改租户,可以调用Flat
API的moveIn($name)
方法。
$flat->moveIn('new-tenant');
实现了一个名为FlatCheckInMiddleware
的中件,基本功能是将变量flatName
的名称转换为用户所在的模式。
要注册此中件,需要在app/Http/Kernel.php
文件中的$routeMiddleware
变量中添加以下行
'flatCheckIn' => 'GPopoteur\Flat\Middleware\FlatCheckInMiddleware'
然后就可以开始了。
示例
子域名租户
要能够执行子域名租户,只需添加一个flatName
变量和flatCheckIn
中件到您的域路由组。
Route::group(['domain' => '{flatName}.domain.com', 'middleware' => 'flatCheckIn'], function(){ // everything inside this closure will be done in the `flatName` schema. });
路由名称租户
因为flatName
变量是在路由中分配的,所以您可以将该变量添加到任何适合您需求的路由组中,例如
Route::group(['prefix' => 'account/{flatName}', 'middleware' => 'flatCheckIn'], function(){ // everything inside this closure will be done in the `flatName` schema. });
当使用提供的中件时,如果租户不存在,中件将抛出一个新的FlatDoesntExistsException
,您可以在全局应用中捕获它,然后将用户重定向到某处,并显示一个友好的错误信息。
贡献
欢迎对库的贡献。要为此存储库贡献代码,请按照以下简单步骤操作
- 分叉此项目。
- 创建一个新的分支。例如:
feature/this-thing
- 提交并将更改推送到您的存储库。
- 从您的分支向此存储库的
develop
分支发起拉取请求。
谢谢 :)
免责声明
由于此包与数据库一起工作,并且数据是生产应用程序中更关键的组成部分,我做出以下声明
我对任何此库对您的数据造成的损害概不负责。此包按原样提供。使用风险自担。
许可
MIT