Home  >  Article  >  PHP Framework  >  Laravel extension recommendation: multi-tenant extension package "multitenancy"

Laravel extension recommendation: multi-tenant extension package "multitenancy"

青灯夜游
青灯夜游Original
2022-10-10 19:10:001790browse

Laravel extension recommendation: multi-tenant extension package

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.

Tenant model

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();

Query tenant customers

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.

Tenant-Aware Console and Queue

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn