Heim > Artikel > PHP-Framework > Empfehlung zur Laravel-Erweiterung: Multi-Tenant-Erweiterungspaket „Multitenancy“
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-Erweiterung Multitenancy Diese 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/i3QzTezcuY pic.twitter.com/cy2Fk4tIe6
– Freek Van der Herten (@freekmurze) May 20, 2020
Laut Freek Van der Hertens Einführungsartikel: Einführungsbeitrag kö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 Datentabelle tenants
, 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 Klasse DomainTenantFinder
wird zum Abfragen und Festlegen des aktuellen Mandanten verwendet. Natürlich können Sie auch eine benutzerdefinierte Abfragemethode konfigurieren, solange Sie die abstrakte Klasse TenantFinder
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 Middleware NeedsTenant
, die den aktuellen Mandanten basierend auf Eingabeparametern bestimmt und festlegt, und die EnsureValidTenantSession
, 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 bitte spatie/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!