我有一个公司对象,它有许多与之相关的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;
}
答案 0 :(得分:0)
在我看来,你有两种选择。首先是您的,它具有易于检索和/或更新活动银行帐户的优势(只需要一个查询或更新)。不幸的是,没有什么能阻止你设置一个不属于banksaccount集合的activeBankAccount。另一种方法是直接向bankaccount类添加一个active属性。但这对于搜索和更新来说是不利的,在最后一种情况下,它至少需要两次更新。