abbotton/think-tenancy

基于ThinkPHP6开发的多租户SAAS扩展

dev-main 2022-04-24 02:20 UTC

This package is auto-updated.

Last update: 2024-04-24 06:24:31 UTC


README

68747470733a2f2f62616e6e6572732e6265796f6e64636f2e64652f5468696e6b25323054656e616e63792e706e673f7468656d653d6c69676874267061636b6167654d616e616765723d636f6d706f7365722b72657175697265267061636b6167654e616d653d6162626f74746f6e2532467468696e6b2d74656e616e6379267061747465726e3d666c6f6174696e67436f6773267374796c653d7374796c655f31266465736372697074696f6e3d4d756c7469706c652b74656e616e63792b666f722b5468696e6b504850266d643d312673686f7757617465726d61726b3d3126666f6e7453697a653d313030707826696d616765733d736572766572

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.