syndicatetheory/multi-tenant-bundle

本包最新版本(dev-master)的许可证信息不可用。

[开发中] Symfony2 多租户包

dev-master 2012-09-15 08:26 UTC

This package is not auto-updated.

Last update: 2024-09-24 08:49:36 UTC


README

SyndMultiTenantBundle 为您的应用程序添加多租户支持。将您的实体设置为实现 MultiTenantInterface,您将获得以下好处:

  • 自动分配给活动租户
  • 自动按活动租户过滤仓库调用

什么是租户?

租户简单地是指代表一组独立数据的任何类。它可以是站点(例如,您使用 clientname.appname.com,或者它可以是您需要唯一数据的公司或用户帐户。

通过让您的租户实体实现 TenantInterface,您可以由您的应用程序处理实现细节。

租户选择策略

该包提供了一个默认的 HostnameStrategy 类,它尝试根据租户的 hostname 字段获取租户。稍后会添加更多,或者您可以通过实现 TenantStrategyInterface 使用您自己的策略 - 该接口简单返回一个 TenantInterface

示例候选者:

  • 站点实体
  • 用户实体
  • 公司实体

与多租户实体一起工作

您的实体类需要实现 MultiTenantInterface,它定义了 getTenantsetTenant 方法。之后,您就不必担心特定租户的数据了。

它是通过监听新实体被持久化,并自动调用带有活动租户的 setTenant 来实现的。

还有一个新的默认实体仓库类(MultiTenantEntityRepository),它自动为多租户实体实例化。它自动按活动租户过滤所有查询。

如果您有自定义仓库类,请确保扩展此类而不是默认的 EntityRepository。

安装

通过 composer.json 安装,并在您的 app/config.yml 中添加以下配置

synd_multi_tenant:
    domainstrategy:
        entity_class: Acme\YourBundle\Entity\User
        entity_field: domain