无侵入
、简单易上手
、高度可自定义
的ThinkPHP v6.x
多租户扩展。
- 通过
子域名
识别租户,实现租户数据库
、文件存储
、缓存
、Session
、Cookie
、视图
的隔离; - 可自定义
租户
租户模型以及字段名称; - 完善的
事件
机制,通过监听或者订阅事件,可实现更多自定义的需求; - 扩展
数据迁移
和数据填充
指令,可以方便的维护租户的数据迁移
和数据填充
; - 高覆盖率的单元测试(WIP);
准备工作:
- 创建
ThinkPHP v6.x
项目; - 完成泛域名解析;
开始安装:
# 引入扩展
composer require abbotton/think-tenancy
# 发布数据迁移文件,发布后的文件位于`database/migrations`文件夹中
php think tenants:publish
- 修改
config/tenancy.php
以及database/migrations/20220422082201_add_tenants_table.php
中的相关配置; - 执行数据迁移,创建租户信息表:
php think migrate:run
; - 自主完善租户信息的创建逻辑;
- 监听
think\tenancy\events\TenantCreated::class
事件进行自定义操作:- 创建租户
OSS Bucket
; - 向租户发送邮件通知;
- ......
- 创建租户
- 访问租户对应域名验证租户信息是否正确;
- 修改
config/tenancy.php
以及database/migrations/20220422082201_add_tenants_table.php
中的相关配置; - 执行数据迁移,创建租户信息表:
php think migrate:run
; - 自主完善租户信息的创建逻辑;
- 通过
php think tenants:migrate:create
命令创建租户的数据迁移文件; - 通过
php think tenants:seed:create
命令创建租户的数据填充文件; - 监听
think\tenancy\events\TenantCreated::class
事件进行自定义操作:- 创建租户数据库;
- 创建租户数据库用户并授权;
- 通过
php think tenants:migrate:run --tenant=sub_domain
执行租户数据迁移; - 通过
php think tenants:seed:run --tenant=sub_domain
执行租户数据填充; - 创建租户
OSS Bucket
; - 向租户发送邮件通知;
- ......
- 访问租户对应域名验证租户信息是否正确;
- 租户的
数据迁移
文件默认存放在database/migrations/tenants
文件夹中,可修改config/tenancy.php
自定义,也可以通过path
参数指定; - 租户的
数据填充
文件默认存放在database/seeds/tenants
文件夹中,可修改config/tenancy.php
自定义,也可以通过path
参数指定; path
参数传参需传入绝对路径;--tenant
选项需要传入租户的二级域名标识,否则会因为匹配不到租户而报错;
# 创建租户迁移文件
tenants:migrate:create <name> [<path>]
# 执行租户数据迁移
tenants:migrate:run [options] [--] [<path>]
# 执行租户数据迁移回滚
tenants:migrate:rollback [options] [--] [<path>]
# 查看租户数据迁移状态
tenants:migrate:rollback [options] [--] [<path>]
# 创建租户数据填充文件
tenants:seed:create <name> [<path>]
# 执行租户数据填充
tenants:seed:run [options] [--] [<path>]
# 发布租户表数据迁移文件
tenants:publish
composer test
请查看 CHANGELOG 获取更多信息.
The MIT License (MIT). Please see License File for more information.