Heim  >  Artikel  >  PHP-Framework  >  Empfehlung zur Laravel-Erweiterung: Multi-Tenant-Erweiterungspaket „Multitenancy“

Empfehlung zur Laravel-Erweiterung: Multi-Tenant-Erweiterungspaket „Multitenancy“

青灯夜游
青灯夜游Original
2022-10-10 19:10:001857Durchsuche

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.

Tenant-Modell

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 全局中间件。

Tenant-Aware 控制台和队列

多租户系统还需要考虑的问题就是:控制台命令和队列范围的界定。默认情况下,队列的执行与否是不会会根据租户来做区分的,该扩展中,您可以通过配置 TenantAwareNotTenantAware 参数来实现特定租户可以使用特定队列的需求。

当然,您也可以通过 tenants:artisan

# 所有租户执行迁移
php artisan tenants:artisan migrate

# 特定租户执行迁移
php artisan tenants:artisan "migrate --seed" --tenant=123

Mieterkunden abfragen

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 Parameter TenantAware und NotTenantAware konfigurieren, um eine bestimmte Warteschlange zu implementieren -spezifische Anforderungen können genutzt werden.

Natü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

## Mehr Wissen

Ü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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn