Laravel 5 多租户应用程序包。

v0.0.1 2015-07-27 09:28 UTC

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,您可以在全局应用中捕获它,然后将用户重定向到某处,并显示一个友好的错误信息。

贡献

欢迎对库的贡献。要为此存储库贡献代码,请按照以下简单步骤操作

  1. 分叉此项目。
  2. 创建一个新的分支。例如:feature/this-thing
  3. 提交并将更改推送到您的存储库。
  4. 从您的分支向此存储库的develop分支发起拉取请求。

谢谢 :)

免责声明

由于此包与数据库一起工作,并且数据是生产应用程序中更关键的组成部分,我做出以下声明

我对任何此库对您的数据造成的损害概不负责。此包按原样提供。使用风险自担。

许可

MIT