mateusevcarvalho/lara-tenant

此软件包最新版本(v1.4)没有提供许可证信息。

v1.4 2019-07-06 18:45 UTC

This package is auto-updated.

Last update: 2024-09-07 06:06:29 UTC


README

为多租户应用程序开发的Laravel软件包。

安装

1 - 执行以下命令

composer require mateusevcarvalho/lara-tenant

配置

2 - 将ServiceProvider添加到config/app.php中的providers

Modules\MultiTenant\Providers\MultiTenantServiceProvider::class,

3 - 同样在config/app.php中添加到aliases

'MultiTenant' => Modules\MultiTenant\Tenant\TenantFacade::class,

4 - 在app/Http/Kernel.php中的$routeMiddleware数组内激活中间件

'tenant' =>  \Modules\MultiTenant\Http\Middleware\TenantMiddleware::class

5 - 发布Tenant模型:请记住创建一个Tenant表以供模型参考

php artisan make:migration create_tenants_table
php artisan vendor:publish --tag=tenantModel

使用示例

在需要身份验证的路由中,放置中间件tenant,并将bindings设置为防止应用程序出现问题并设置登录的租户

Route::group(['middleware' => ['auth:api', 'tenant', 'bindings']], function () {
  Route::apiResource('produtos', 'ProdutosController');
});

要设置租户,请使用\MultiTenant::set($tenant),要检索,请使用\MultiTenant::get(),如下例所示

public function store(Request $request)
{
    DB::beginTransaction();
    $formData = $request->all();
    $tenant = Tenant::create(['uuid' => Uuid::generate()->string]);
    \MultiTenant::set($tenant);
    $individuo = $tenant->individuo()->create($formData['individuos']);
    $user = $individuo->user()->create([
        'status' => $formData['users']['status'],
        'email' => $formData['users']['email'],
        'password' => Hash::make($formData['users']['password'])
    ]);
    if ($tenant && $user && $individuo) {
        DB::commit();
        (new CadastrosInicial())->cadastrar();
        return response()->json(compact('tenant', 'user', 'individuo'));
    }
    DB::rollBack();
    return response()->json('Falha interna', 500);
}

在具有多租户功能的模型中使用TenantModels trait来自动化模型的所有查询过程