Skip to content

yangxmo/think-tenancy

Repository files navigation

基于ThinkPHP6开发的多租户扩展

Latest Version on Packagist Total Downloads GitHub Actions

无侵入简单易上手高度可自定义ThinkPHP v6.x 多租户扩展。

功能特性

  • 通过子域名识别租户,实现租户数据库文件存储缓存SessionCookie视图的隔离;
  • 可自定义租户租户模型以及字段名称;
  • 完善的事件机制,通过监听或者订阅事件,可实现更多自定义的需求;
  • 扩展数据迁移数据填充指令,可以方便的维护租户的数据迁移数据填充
  • 高覆盖率的单元测试(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 获取更多信息.

致谢

License

The MIT License (MIT). Please see License File for more information.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages