我无法弄清楚哪个是使用来自存储在不同实体中的对象列表中的选定对象映射实体属性的最佳方法。
示例用例:
AccountType
实体,有5种帐户类型(我需要有一个实体,因为它有很多关联和属性,比如启用等等...... )。User
实体,其$accountType
属性。User
只能选择一个AccountType
(使用表单)。问题:
映射User:accountType
属性的常用方法是什么?考虑到那时我将需要检索一些统计数据,以检索属于每种帐户类型的所有用户,等等。
我应该将$accountType
映射为string
并使用Data Transformer来预测字符串,还是使用oneToOne关联存在一些其他方法,例如地图$accountType
?
答案 0 :(得分:1)
这很常见。你需要一个ManyToOne关系。
class User
{
//...
/**
* Many Users will have One AccountType
*
* @ORM\ManyToOne(targetEntity="AccountType")
*/
private $accountType;
/**
* @return AccountType
*/
public function getAccountType()
{
return $this->accountType;
}
}
然后,您可以访问与您的用户绑定的accountType对象,如下所示:
$user->getAccountType(); // AccountType object
根据您的需要,您可能希望定义双向关系(即,在AccountType实体中定义OneToMany关系)。这将允许你做类似的事情:
$accountType->getUsers();
这只需要在您的实体中完成一些工作,但只需几行代码即可实现强大功能。