Laravel擴展推薦:多租戶擴展包 “multitenancy”

Laravel擴展推薦:多租戶擴展包 “multitenancy”

多租戶系統是那些需要在一套后端程序上同時維護多個客戶的 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 的介紹文章:multitenancy,可以了解到該擴展僅僅是提供用戶實現多租戶系統的基本要素。

你可以從該擴展獲取以下便利:

  • 判斷當前是哪個租戶。

  • 租戶配置的級聯更改。

  • 創建新租戶數據庫,并在租戶間的數據遷移工具。

詳細介紹以及使用方法請看具體文檔:multitenancy.

租戶模型

該擴展的核心是: Tenant 模型,該模型用于租戶實例的創建,您可以通過該擴展提供的一些遍歷方法快速使用和訪問當前租戶。

use?SpatieMultitenancyModelsTenant;  //?獲取當前租戶,不存在返回?null Tenant::current()  //?通過容器的方式獲取當前租戶 app('currentTenant');  //?確認當前是否有租戶 Tenant::checkCurrent()  //?將某個租戶設置為當前租戶 $tenant->makeCurrent();  //?忘記當前租戶 Tenant::forgetCurrent();

查詢租戶客戶

在安裝該擴展之后,在數據庫中你會發現 tenants 數據表,該表用于存儲租戶信息。該擴展實現了一些便利的方法,包括通過域名來確定當前租戶,其中 DomainTenantFinder 類,就是用于查詢并設置當前租戶。當然,你也可以配置自定義查詢方式,只要實現 TenantFinder 抽象類即可。

在查找租戶時您可能還需要考慮一些必要判定。該擴展提供了一些租戶判定的中間件,比如根據入參來確定并設置當前所屬租戶的中間件 NeedsTenant,以及防止非當前租戶的用戶訪問的 EnsureValidTenantSession 全局中間件。

Tenant-Aware 控制臺和隊列

多租戶系統還需要考慮的問題就是:控制臺命令和隊列范圍的界定。默認情況下,隊列的執行與否是不會會根據租戶來做區分的,該擴展中,您可以通過配置 TenantAware 和 NotTenantAware 參數來實現特定租戶可以使用特定隊列的需求。

當然,您也可以通過 tenants:artisan 命令來實現在特定租戶下執行遷移的需求,案例如下:

#?所有租戶執行遷移 php?artisan?tenants:artisan?migrate  #?特定租戶執行遷移 php?artisan?tenants:artisan?"migrate?--seed"?--tenant=123

## 更多知識

關于擴展的使用以及安裝,請閱讀 multitenancy.

想要了解更多細節請閱讀 multitenancy

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

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

【相關推薦:multitenancy

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享