如何将实体 属性 与来自另一个实体的对象列表的对象映射?

How to map an entity property with an object coming from a list of objects of another entity?

我无法弄清楚哪种方法是将实体 属性 与 selected 对象映射的最佳方法,该对象来自存储在不同实体中的对象列表。

示例用例:

问题:

映射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();

这只需要在您的实体中多做一些工作,但仅需几行代码就非常强大。