Doctrine2 - 与默认值的一对多关系

时间:2013-06-28 13:02:14

标签: doctrine-orm doctrine default-value

我有一个公司对象,它有许多与之相关的bankAccount对象。但是,一家公司只需要一个活跃的银行账户。

在公司对象中标记有效bankAccount的正确方法是什么?

在我目前的实现中,我添加了一个名为activeBankAccount的OneToOne Unidirectional字段,该字段最初可以为空。它似乎有效,但还有更好的方法吗?

class Company
{

/**
 * @ORM\OneToMany(targetEntity="BankAccount", mappedBy="company")
 */
private $bankAccounts;

/**
 * @ORM\OneToOne(targetEntity="BankAccount")
 * @ORM\JoinColumn(name="bank_account_id", referencedColumnName="id", nullable=true)
 */
private $activeBankAccount;

}

class BankAccount
{

/**
 * @ORM\ManyToOne(targetEntity="Company", inversedBy="bankAccounts")
 * @ORM\JoinColumn(name="company_id", referencedColumnName="id", nullable=false)
 */
private $company;
}

1 个答案:

答案 0 :(得分:0)

在我看来,你有两种选择。首先是您的,它具有易于检索和/或更新活动银行帐户的优势(只需要一个查询或更新)。不幸的是,没有什么能阻止你设置一个不属于banksaccount集合的activeBankAccount。另一种方法是直接向bankaccount类添加一个active属性。但这对于搜索和更新来说是不利的,在最后一种情况下,它至少需要两次更新。