如何将实体 属性 与来自另一个实体的对象列表的对象映射?
How to map an entity property with an object coming from a list of objects of another entity?
我无法弄清楚哪种方法是将实体 属性 与 selected 对象映射的最佳方法,该对象来自存储在不同实体中的对象列表。
示例用例:
- 我有一个具有 5 种帐户类型的
AccountType
实体(我需要一个实体,因为它将有许多关联和属性,例如已启用等... ).
- 我有一个
User
实体 $accountType
属性。
User
只能select一个AccountType
(使用一个表格)。
问题:
映射User:accountType
属性的常用方法有哪些?考虑到那时我将需要检索一些统计数据,如检索属于每个帐户类型的所有用户等。
我应该将 $accountType
映射为 string
并使用 Data Transformer 来分离字符串,还是存在一些其他方法,例如使用 oneToOne 关联的映射 $accountType
?
这很常见。您需要多对一关系。
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();
这只需要在您的实体中多做一些工作,但仅需几行代码就非常强大。
我无法弄清楚哪种方法是将实体 属性 与 selected 对象映射的最佳方法,该对象来自存储在不同实体中的对象列表。
示例用例:
- 我有一个具有 5 种帐户类型的
AccountType
实体(我需要一个实体,因为它将有许多关联和属性,例如已启用等... ). - 我有一个
User
实体$accountType
属性。 User
只能select一个AccountType
(使用一个表格)。
问题:
映射User:accountType
属性的常用方法有哪些?考虑到那时我将需要检索一些统计数据,如检索属于每个帐户类型的所有用户等。
我应该将 $accountType
映射为 string
并使用 Data Transformer 来分离字符串,还是存在一些其他方法,例如使用 oneToOne 关联的映射 $accountType
?
这很常见。您需要多对一关系。
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();
这只需要在您的实体中多做一些工作,但仅需几行代码就非常强大。