Doctrine orm Doctrine2-具有默认值的一对多关系

Doctrine orm Doctrine2-具有默认值的一对多关系,doctrine-orm,doctrine,default-value,Doctrine Orm,Doctrine,Default Value,我有一个company对象,其中有许多与之相关的bankAccount对象。然而,一家公司只需要有一个活跃的银行账户 在公司对象中标记活动银行帐户的正确方法是什么 在我当前的实现中,我添加了一个名为activeBankAccount的OneToOne单向字段,该字段最初可为空。这似乎有效,但有没有更好的方法 class Company { /** * @ORM\OneToMany(targetEntity="BankAccount", mappedBy="company") */ priv

我有一个company对象,其中有许多与之相关的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;
}

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