2

我有一个公司对象,其中有许多相关的 bankAccount 对象。但是,一家公司只需要一个有效的银行帐户。

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

在我当前的实现中,我添加了一个名为 activeBankAccount 的 OneToOne 单向字段,该字段最初可以为空。它似乎有效,但有没有更好的方法来做到这一点?

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;
}
4

1 回答 1

0

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

于 2013-06-28T13:14:37.923 回答