Symfony中的复合密钥ID生成器

时间:2016-07-26 08:54:19

标签: php postgresql symfony doctrine-orm doctrine

我正在使用Symfony3,Doctrine和PostgreSQL构建多租户应用程序。

我希望每个实体都有两个主键:tenantIdentityId。这样,每个租户都有一个id为1的数据。

所以,用户' Xyz'来自帐篷1的是http://example.com/users/1,用户' Zzz'从租户2也是http://example.com/users/1。 tenantId存储在会话中,因此它没有在URL中表示(是的,我知道这是不正确的RESTful)。

我已经知道如何使用Doctrine处理复合键,在所有字段中添加@Id注释,但我不知道如何生成这些ID。

是否有任何自动方式可以解决此问题,或者我需要在Doctrine中创建自定义生成器并使用MAX(id) + 1找到给定实体的WHERE tenantId = :TENANT_ID

感谢您的帮助。

我正在寻找的例子:

租户表:

tenantId | tenantName
1 |第一家公司 2 |第二家公司

用户表:

tenantId | userId |用户名
1 | 1 | Foo Bar先生 1 | 2 | Bar Foo夫人 2 | 1 | John Doe先生 2 | 2 | Mary Doe夫人

正如您所看到的,用户的主要关键是' table是一个复合键(tenantIduserId)。我正在寻找的是一种简单的自动化方法来生成userId。在只有PK的表中,此方法可以是简单的生成器或SERIAL字段,但由于这是复合PK,我需要userId值取决于tenantId字段。

0 个答案:

没有答案