Mandantenfähige Systeme sind ein Segen für Webentwickler, die mehrere Clients gleichzeitig auf einer Reihe von Back-End-Programmen verwalten müssen.
Eine von Spatie veröffentlichte Laravel-ErweiterungMultitenancyDiese Erweiterung hilft Ihnen hauptsächlich beim schnellen Aufbau eines Multi-Tenant-Systems:
Veröffentlichungsadresse der Laravel-Multitenancy-Erweiterung:t.co/q9HzfkNw7w
Das Erweiterungskonzept soll Ihnen zur Verfügung gestellt werden mit der Fähigkeit, Mandantenfähigkeit zu erreichen. Grundelemente eines Mandanten.Dokumentation:t.co/zspuLyt3KN
Videodemo (Fall):t.co/i3QzTezcuYpic.twitter.com/cy2Fk4tIe6
– Freek Van der Herten (@freekmurze)May 20, 2020
Laut Freek Van der Hertens Einführungsartikel:Einführungsbeitragkönnen Sie verstehen, dass diese Erweiterung Benutzern nur die Grundelemente zur Implementierung eines mandantenfähigen Systems bietet.
Mit dieser Erweiterung können Sie folgende Annehmlichkeiten nutzen:
Bestimmen Sie, welcher Mieter Sie aktuell sind.
Kaskadierende Änderungen an der Mandantenkonfiguration.
Erstellen Sie eine neue Mieterdatenbank und ein Datenmigrationstool zwischen Mietern.
Eine ausführliche Einführung und Verwendung finden Sie im jeweiligen Dokument:Laravel-Multitenancy-Dokumentation.
Der Kern dieser Erweiterung ist:Tenant
-Modell, das verwendet wird für Mieter Nach der Instanzerstellung können Sie über einige von dieser Erweiterung bereitgestellte Durchquerungsmethoden schnell den aktuellen Mieter verwenden und darauf zugreifen.Tenant
模型,该模型用于租户实例的创建,您可以通过该扩展提供的一些遍历方法快速使用和访问当前租户。
use Spatie\Multitenancy\Models\Tenant; // 获取当前租户,不存在返回 null Tenant::current() // 通过容器的方式获取当前租户 app('currentTenant'); // 确认当前是否有租户 Tenant::checkCurrent() // 将某个租户设置为当前租户 $tenant->makeCurrent(); // 忘记当前租户 Tenant::forgetCurrent();
在安装该扩展之后,在数据库中你会发现tenants
数据表,该表用于存储租户信息。该扩展实现了一些便利的方法,包括通过域名来确定当前租户,其中DomainTenantFinder
类,就是用于查询并设置当前租户。当然,你也可以配置自定义查询方式,只要实现TenantFinder
抽象类即可。
在查找租户时您可能还需要考虑一些必要判定。该扩展提供了一些租户判定的中间件,比如根据入参来确定并设置当前所属租户的中间件NeedsTenant
,以及防止非当前租户的用户访问的EnsureValidTenantSession
全局中间件。
多租户系统还需要考虑的问题就是:控制台命令和队列范围的界定。默认情况下,队列的执行与否是不会会根据租户来做区分的,该扩展中,您可以通过配置TenantAware
和NotTenantAware
参数来实现特定租户可以使用特定队列的需求。
当然,您也可以通过tenants:artisan
# 所有租户执行迁移 php artisan tenants:artisan migrate # 特定租户执行迁移 php artisan tenants:artisan "migrate --seed" --tenant=123
Nach der Installation der Erweiterung finden Sie in der Datenbank die Datentabelletenants
, die zum Speichern von Mieterinformationen verwendet wird. Diese Erweiterung implementiert einige praktische Methoden, einschließlich der Bestimmung des aktuellen Mandanten anhand des Domänennamens. Die KlasseDomainTenantFinder
wird zum Abfragen und Festlegen des aktuellen Mandanten verwendet. Natürlich können Sie auch eine benutzerdefinierte Abfragemethode konfigurieren, solange Sie die abstrakte KlasseTenantFinder
implementieren.Möglicherweise müssen Sie bei der Suche nach Mietern auch einige notwendige Beurteilungen berücksichtigen. Diese Erweiterung stellt einige Middleware zur Mandantenbestimmung bereit, z. B. die MiddlewareNeedsTenant
, die den aktuellen Mandanten basierend auf Eingabeparametern bestimmt und festlegt, und dieEnsureValidTenantSession
, die den Zugriff durch andere Benutzer als den verhindert aktueller Mieter. > Globale Middleware.
Mandantenfähige Konsole und Warteschlange
Ein weiteres Problem, das in einem mandantenfähigen System berücksichtigt werden muss, ist: die Definition von Konsolenbefehlen und Warteschlangenbereichen. Standardmäßig wird die Ausführung der Warteschlange nicht nach dem Mandanten unterschieden. In dieser Erweiterung können Sie die ParameterTenantAware
und
NotTenantAware
konfigurieren, um eine bestimmte Warteschlange zu implementieren -spezifische Anforderungen können genutzt werden.
## Mehr WissenNatürlich können Sie auch den Befehl
tenants:artisan
verwenden, um die Migration unter einem bestimmten Mandanten durchzuführen. Der Fall ist wie folgt:rrreee
Über die Verwendung von Erweiterungen und Zur Installation lesen Sie bittespatie/laravel-multitenancy
.Für weitere Details lesen Sie bitte Freeks Beitrag. Originaladresse: https://laravel-news.com/spatie-multitenancy-laravelÜbersetzungsadresse: https://learnku.com/laravel/t/45142[Verwandte Empfehlungen: Laravel-Video-Tutorial 】Das obige ist der detaillierte Inhalt vonEmpfehlung zur Laravel-Erweiterung: Multi-Tenant-Erweiterungspaket „Multitenancy'. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!