acdphp/laravel-multitenancy

Laravel多租户模型范围和自动租户分配。

v2.1.1 2023-12-30 08:10 UTC

This package is auto-updated.

Last update: 2024-08-30 01:55:26 UTC


README

Latest Stable Version

Laravel多租户模型范围和自动租户分配。

安装

composer require acdphp/laravel-multitenancy

此包将根据解析的认证用户的租户键值确定当前租户。

模型使用

use \Acdphp\Multitenancy\Traits\BelongsToTenant;

class YourModel extends Model
{
    use BelongsToTenant;
}

手动设置租户

  • 例如,在注册过程中,由于是非认证端点,租户未设置。必须手动分配租户。
use Acdphp\Multitenancy\Facades\Tenancy;

// Create a company and set it as tenant
$company = Company::create(...);
Tenancy::setTenantIdResolver(fn () => $company->id);

// Then proceed to create a user
User::create(...);

绕过范围

  • 有时,在访问属于租户的模型时需要绕过范围。
use Acdphp\Multitenancy\Facades\Tenancy;

Tenancy::bypassScope();
  • 或者使用中间件。
Route::middleware(['tenancy.scope.bypass'])->get('/resources/all', ...);

绕过自动租户分配

  • 还可以绕过自动租户分配。
use Acdphp\Multitenancy\Facades\Tenancy;

Tenancy::bypassCreating();
  • 或者使用中间件。
Route::middleware(['tenancy.creating.bypass'])->post('your-route', ...);

修改配置

  • 发布配置
php artisan vendor:publish --provider="Acdphp\Multitenancy\TenancyServiceProvider"
  • 更改列名以在模型中查找租户。
'tenant_ref_key' => 'company_id',

许可协议

MIT许可协议(MIT)。有关更多信息,请参阅许可文件