Laravel擴充套件推薦:多租戶擴充套件包 「multitenancy」

2022-10-10 22:00:57

Laravel 9 保姆級視訊教學,想學不會都難!進入學習

多租戶系統是那些需要在一套後端程式上同時維護多個客戶的 web 開發者的福音。

Spatie 釋出的一個 Laravel 的擴充套件 multitenancy ,該擴充套件主要幫助您快速搭建多租戶系統:

laravel-multitenancy 擴充套件釋出地址:t.co/q9HzfkNw7w
該擴充套件理念是提供您實現多租戶的基本要素。

檔案: t.co/zspuLyt3KN

視訊演示 (案例): t.co/i3QzTezcuY pic.twitter.com/cy2Fk4tIe6

— Freek Van der Herten (@freekmurze) May 20, 2020

根據 Freek Van der Herten 的介紹文章:introductory post,可以瞭解到該擴充套件僅僅是提供使用者實現多租戶系統的基本要素。

你可以從該擴充套件獲取以下便利:

  • 判斷當前是哪個租戶。

  • 租戶設定的級聯更改。

  • 建立新租戶資料庫,並在租戶間的資料遷移工具。

詳細介紹以及使用方法請看具體檔案:laravel-multitenancy documenation.

租戶模型

該擴充套件的核心是: 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

## 更多知識

關於擴充套件的使用以及安裝,請閱讀 spatie/laravel-multitenancy.

想要了解更多細節請閱讀 Freek’s post

原文地址:https://laravel-news.com/spatie-multitenancy-laravel

譯文地址:https://learnku.com/laravel/t/45142

【相關推薦:】

以上就是Laravel擴充套件推薦:多租戶擴充套件包 「multitenancy」的詳細內容,更多請關注TW511.COM其它相關文章!