ringierimu / multi-tenancy
此包已被弃用且不再维护。未建议替代包。
Laravel 多租户包
dev-master
2019-05-03 14:22 UTC
Requires
- php: >=7.1.3
- illuminate/support: ^5.6 || ^5.7 || ^5.8
Requires (Dev)
- orchestra/testbench: ^3.5
- phpunit/phpunit: ^6.0 || ^7.0
This package is not auto-updated.
Last update: 2024-02-17 09:25:42 UTC
README
“多租户”一词指的是一种软件架构,其中单个软件实例在服务器上运行并为多个租户提供服务。租户是一组共享特定权限访问软件实例的用户组。在多租户架构中,软件应用程序被设计为为每个租户提供实例的专用份额 - 包括其数据、配置、用户管理、租户特定功能和非功能性属性。
安装
$ composer require ringierimu/multi-tenant
运行迁移
$ php artisan migrate
配置
- 打开位于您Http目录中的
kernel.php
文件,并将Ringierimu\MultiTenant\Http\Middleware\TenantMiddleware\TenantMiddleware::class
添加到全局 http 中间件$middleware
。
/** * The application's global HTTP middleware stack. * * These middleware are run during every request to your application. * * @var array */ protected $middleware = [ ... TenantMiddleware::class ];
- 将
TenantDependableTrait
添加到您的模型类以支持工作流
<?php namespace App; use Illuminate\Database\Eloquent\Model; use Ringierimu\MultiTenant\Traits\TenantDependableTrait; /** * Class Post * @package App */ class Post extends Model { use TenantDependableTrait; }
- 为
domains
表创建种子数据并运行种子数据
例如。
<?php use Illuminate\Support\Facades\DB; DB::table('domains')->insert([ 'title' => 'Ringier', 'host' => 'ringier.test', 'alieses' => 'rg', 'country_id' => 1 ]);
功能
租户解析器
TenantMiddleware::class
通过 HTTP 请求解析租户。它使用请求域名来查询domains
表。- 要获取解析的租户实例,您可以使用依赖注入注入
TenantManager
类或使用 Laravel 依赖注入容器返回TenantManager
类的现有实例。
<?php $tenantManager = app(Ringierimu\MultiTenant\TenantManager::class); echo $tenantManager->getDomain();
<?php use Ringierimu\MultiTenant\TenantManager; public function login(TenantManager $tenantManager) { echo $tenantManager->getDomain(); }
租户应用程序配置
- 要为每个租户添加自定义配置,请将目录
tenants
添加到 Laravel 默认配置目录中,并以租户aliases
键作为子目录。例如config/tenants/rg/app.php
。
注意。aliases
键必须与domains
表上设置的租户别名键相同。 - 在租户目录中找到的任何配置键将覆盖 Laravel 默认配置中存在的任何键。