我无法弄清楚哪种方法是将实体属性与来自存储在不同实体中的对象列表中的选定对象映射的最佳方法。
示例用例:
- 我有一个具有 5 种帐户类型的
AccountType
实体(我需要有一个实体,因为它将具有许多关联和属性,例如启用等...... - 我有一个具有
$accountType
属性的User
实体。 User
只能选择一个AccountType
(使用表单(。
问题:
映射User:accountType
属性的常用方法是什么?考虑到这一点,我将需要检索一些统计数据,作为检索属于每种帐户类型的所有用户,依此类推。
我应该将$accountType
映射为string
并使用数据转换器来分隔字符串还是存在其他方法,例如使用 oneToOne 关联的映射$accountType
?
很常见。你需要一个多对一的关系。
class User
{
//...
/**
* Many Users will have One AccountType
*
* @ORMManyToOne(targetEntity="AccountType")
*/
private $accountType;
/**
* @return AccountType
*/
public function getAccountType()
{
return $this->accountType;
}
}
然后,您可以访问与您的用户绑定的 accountType 对象,如下所示:
$user->getAccountType(); // AccountType object
根据您的需要,您可能需要定义双向关系(即,在 AccountType 实体中定义一对多关系(。这将允许您执行以下操作:
$accountType->getUsers();
这只需要在您的实体中做更多的工作,但只需几行代码即可非常强大。