abbotton / think-tenancy
基于ThinkPHP6开发的多租户SAAS扩展
    dev-main
    2022-04-24 02:20 UTC
Requires
- php: >=7.2.5
- symfony/finder: >=4.4
- topthink/framework: >=6.0
- topthink/think-migration: >=3.0
Requires (Dev)
- phpunit/phpunit: >=8.0
This package is auto-updated.
Last update: 2024-09-24 07:32:22 UTC
README
无侵入、简单易上手、高度可自定义的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
测试(WIP)
composer test
更新日志
请查看 CHANGELOG 获取更多信息.
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。