mateusevcarvalho / lara-tenant
此软件包最新版本(v1.4)没有提供许可证信息。
v1.4
2019-07-06 18:45 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来自动化模型的所有查询过程