acdphp / laravel-multitenancy
Laravel多租户模型范围和自动租户分配。
v2.1.1
2023-12-30 08:10 UTC
Requires
- php: ^8.0
Requires (Dev)
- ekino/phpstan-banned-code: ^1.0
- larastan/larastan: ^2.7
- laravel/pint: ^1.5
- orchestra/testbench: ^7.38
- pestphp/pest: ^1.23
- pestphp/pest-plugin-laravel: ^1.4
- phpstan/phpstan: ^1.10
README
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)。有关更多信息,请参阅许可文件。