Multi-tenant systems are a boon for web developers who need to maintain multiple clients simultaneously on a single back-end application.
A Laravel extension multitenancy released by Spatie. This extension mainly helps you quickly build a multi-tenant system:
laravel-multitenancy extension release address: t.co/q9HzfkNw7w
The extension concept is to provide you with the basic elements for multi-tenancy.Document: t.co/zspuLyt3KN
Video demonstration (case): t.co/i3QzTezcuY pic.twitter.com /cy2Fk4tIe6
— Freek Van der Herten (@freekmurze) May 20, 2020
According to Freek Van der Herten’s introductory article: introductory post, you can understand that this extension only provides users with the basic elements to implement a multi-tenant system.
You can get the following conveniences from this extension:
Determine which tenant is currently.
Cascading changes to tenant configuration.
Create new tenant database and data migration tool between tenants.
For detailed introduction and usage, please see the specific document: laravel-multitenancy documenation.
The core of this extension is: Tenant
model, which is used for the creation of tenant instances. You can quickly use and access the current tenant through some traversal methods provided by this extension.
use Spatie\Multitenancy\Models\Tenant; // 获取当前租户,不存在返回 null Tenant::current() // 通过容器的方式获取当前租户 app('currentTenant'); // 确认当前是否有租户 Tenant::checkCurrent() // 将某个租户设置为当前租户 $tenant->makeCurrent(); // 忘记当前租户 Tenant::forgetCurrent();
After installing the extension, you will find the tenants
data table in the database, This table is used to store tenant information. This extension implements some convenient methods, including determining the current tenant through the domain name. The DomainTenantFinder
class is used to query and set the current tenant. Of course, you can also configure a custom query method, as long as you implement the TenantFinder
abstract class.
You may also need to consider some necessary decisions when looking for tenants. This extension provides some tenant determination middleware, such as the middleware that determines and sets the current tenant based on input parameters NeedsTenant
, and the EnsureValidTenantSession
global that prevents access by users other than the current tenant. middleware.
Another issue that needs to be considered in a multi-tenant system is: the definition of console commands and queue ranges. By default, the execution of the queue will not be differentiated based on the tenant. In this extension, you can configure the TenantAware
and NotTenantAware
parameters to enable specific tenants to use Requirements for specific queues.
Of course, you can also use the tenants:artisan
command to implement migration under a specific tenant. The case is as follows:
# 所有租户执行迁移 php artisan tenants:artisan migrate # 特定租户执行迁移 php artisan tenants:artisan "migrate --seed" --tenant=123
# #More knowledge
For more information about the use and installation of extensions, please readspatie/laravel-multitenancy.
For more details please readFreek's post .
Original address: https://laravel-news.com/spatie-multitenancy-laravel
Translation address: https://learnku.com/laravel/t/45142
[Related recommendations: laravel video tutorial]
The above is the detailed content of Laravel extension recommendation: multi-tenant extension package 'multitenancy'. For more information, please follow other related articles on the PHP Chinese website!