1

我正在使用 Symfony2 构建一个应用程序,并使用 Doctrine 作为我的 ORM。

我的用户将需要存储大量特定于他们的配置/设置(想想“您想接收我们的电子邮件吗?”作为要存储的设置的典型示例)。

我构建这个的最佳方式是什么?

我应该为每个设置向我的用户实体添加属性吗?

protected $receiveEmails;

或者我应该创建一个'userSetting'实体,与我的用户对象有manyToMany关系并且让userSetting实体有另外两个属性:

protected $setting;
protected $value;

?

我问的主要原因是性能。我希望在用户对象上有一个属性,因此某些设置可以是布尔类型,其他字符串等,但不希望我的网站每次获取当前用户实体时都从数据库中获取这些值(几乎每个页面,因为我的身份验证回退了我的数据库中的用户实体)。

答案是什么?我是否需要返回并重新编写使用的任何实例:

....getRepository('AcmeMainBundle:User')->find($id)

使用仅选择我在那种情况下需要的元素的自定义存储库功能?

还是我过度优化?

4

1 回答 1

1

有两种方法。

ManyToMany1)如您所说,创建一个具有关系的单独实体。

2)使用关系创建一个单独的实体,OneToOne其中实体的每个属性都是一个设置名称。

由于性能,我会选择第二个选项。一行多列优于多行一列。而且它更容易处理和实施。

于 2013-03-01T15:04:13.473 回答