与其他包相比
# 与其他包相比
# hyn/multi-tenancy
这个包的目的是为你提供必要的工具,以便将多租户手动添加到你的应用程序。它将为你提供模型特征,创建租户数据库的类,以及一些额外的工具。
当你想手动实现多租户时,这本来是一个不错的选择,但是:
它没有被积极开发——过去 N 年没有添加任何功能
它的测试过程像噩梦一样。
在过去的几个月里,我收到了这样的反馈:
但是,我仍然不能在 Hyn 中运行任何测试,而且遇到了一些队列问题,依然不知道如何处理。
目前,我们的应用是使用最新的 Laravel 和最新的 Hyn/tenancy。我唯一不喜欢的是,测试是非常差劲的,以至于我不敢乱动任何东西,因为有可能破坏一切。
顺便说一下,这个软件包非常棒!它比以前的版本好得多。在我看来,它比 hyn 的替代品要好得多,后者有点乱...... 很遗憾,我没有早点遇到它。
我分享这个并不是为了故意让 hyn/multi-tenancy 变得糟糕,但是如果你决定使用那个包,要非常小心。
# tenancy/tenancy
该软件包旨在为您提供构建自己的多租户实施的框架。 文档非常少,所以我无法详细了解它的作用,但据我了解,它为您提供了诸如事件之类的东西,您可以使用它们来构建自己的多租户逻辑。
如果您想要非常高的灵活性并且会自己实现一些东西,那么查看这个包可能会很有用。
但是,如果您正在寻找可以帮助您快速创建多租户项目的软件包,那么这可能不是正确的选择。
# spatie/laravel-multitenancy
这个包是一个非常简单的多租户实现。
它的功能与 stancl/tenancy v2 相同,但开箱即用的功能要少得多。
与 v2 的 stancl/tenancy 相比,我在这个包中看到的唯一好处是它使用了开箱即用的 Eloquent,这使得像 Cashier 集成这样的事情更容易。 但是,这无关紧要,因为我们已经在 v3 中使用了 Eloquent。
因此,我建议您仅在出于某种原因重视简单性并且不构建具有任何复杂性和需要“业务功能”的任何东西时才考虑此包。
# stancl/tenancy
在我看来--当然是有偏见的,但也可能是真实的--这个包是绝大多数应用的绝对最佳选择。
如果您需要一些非常个性的东西,我会真正考虑的唯一软件包是我的(当然)tenancy/tenancy,尽管我在 99% 的应用程序中看不到这样做的原因。
这个软件包试图与 tenancy/tenancy 一样灵活,但也为你提供了绝对大量的开箱即用的功能和其他工具。它作为第一个使用自动方法并添加更多功能的扩展——其中大部分是 v3 中的“企业”功能。
为了给你一个不完整但足够好的特性列表,这个包支持:
- 多数据库租用
- 创建数据库
- MySQL
- PostgreSQL
- PostgreSQL (schema mode)
- SQLite
- 创建数据库用户
- 自动切换数据库
- CLI 命令,比 spatie/laravel-multitenancy 等有更多的功能
- migrate
- migrate:fresh
- seed
- 创建数据库
- 单库租用
- 具有全局范围的模型特征
- 丰富的事件系统
- 非常高的可测试性
- 自动租用
- 租户引导程序切换:
- 数据库连接
- redis 连接
- 缓存标签
- 文件系统根
- 队列上下文
- 租户引导程序切换:
- 手动租用
- 模型特征
*开箱即用的租户识别
- 域识别
- 子域识别
- 路径识别
- 请求数据识别
- 上述方法的中间件类
- CLI 参数识别 *手动识别(例如在修补程序中) *与许多软件包集成 _ spatie/laravel-medialibrary _ spatie/laravel-activitylog _ Livewire _ Laravel Nova _ for managing tenants _ for using inside the tenant application _ Laravel Horizon _ Laravel Telescope * Laravel Passport
- 模型特征
*开箱即用的租户识别
- 在多个租户数据库之间同步用户(或任何其他数据库资源)
- 当前租户的依赖注入
- 租户 用户模拟
- 缓存租户查找,所有租户解析器通用