0

我正在使用 FOSUserBundle 在 Symfony2 中开发,我对 DDBB 设计不太确定。我会尽量简单地解释我的情况。假设我的项目就像 facebook。所以你知道实体“用户”将是整个应用程序中最重要和最相关的,一切都与它相关。

关键是我不确定如何使用 FOSUserBundle 处理 DB 层(表、学说实体和关系)。默认情况下,实体 User 必须具有所有 FOSUserBundle 字段(用户名、电子邮件、令牌、email_canonical 等等......)。所以我怀疑我是否应该创建另一个实体来处理与其他实体的关系,比如“UserReal”。它将与第一个实体“用户”有 OneToOne 关系,女巫将仅用于登录或访问目的。或者只创建一个对象“用户”并用它处理所有事情。

我的选择:

1. - 实体“UserSecurity”女巫扩展了 FosUserBundle 用户实体,仅限用于访问(登录、注销、注册)的情况。- 有实体“UserReal”,或者只是“用户”女巫拥有来自用户的每个字段属性(姓名、姓氏、位置)。它与其他实体(如页面、组、照片)有关系。它是“主要”实体,具有生成值的策略。- UserSecurity 通过 UserSecurity->id_user 与用户建立 OneToOne 关系。- 注册必须插入两个实体。

  1. 另一种方式

    • 与第 1 点一样,但主要实体是“UserSecurity”,因此 id 将在其中,并且生成值的策略也将在其中。
    • 用户实体,将具有字段 id_user 与 OneToOne 到 UserSecurity 的关系。
  2. 使用一个对象

    • 在一个实体中扩展 FOSUserBundle 并为其设置所有关系。
    • 我不喜欢这样,因为我需要一个没有安全选项的干净对象用户。

我认为 facebook 有很多用户实体实例(例如,每个朋友一个),但只有一个用户登录实例,所以如果我们将它用于所有内容将是错误的。

我想知道其他意见/建议。

我希望它没有被混淆(或者我没有混淆)。

提前谢谢了。

4

1 回答 1

1

只需扩展 FOS 用户类,无需OneToOne与孪生实体建立关系。

拆分更多实体会导致水合和持久性开销,但还会导致不需要的分离逻辑:您正在定义用户属性 [用户名、密码、名字、姓氏等],它们都属于同一个实体。

如果您需要不同类型的用户,您应该考虑与其他实体组成子类,但这超出了您问题的范围。

于 2012-09-27T19:17:01.330 回答