2013-06-28 3 views
1

У меня есть объект компании, который имеет много объектов bankAccount. Однако у одной компании должен быть только один активный банковский счет.Doctrine2 - отношение одного ко многим со значением по умолчанию

Каков правильный способ отметить активный банковский счет в объекте компании?

В моей текущей реализации я добавил одностороннее однопользовательское поле под названием activeBankAccount, которое изначально имеет значение NULL. Кажется, что это работает, но есть ли лучший способ сделать это?

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

По-моему, у вас есть два варианта. Первое ваше, оно имеет то преимущество, что легко получить и обновить активную банковскую учетную запись (требуется только один запрос или обновление). К сожалению, ничто не мешает вам установить activeBankAccount, который не входит в коллекцию учетных записей. Другой способ - добавить свойство, активное к классу bankaccount, напрямую. Но это имеет недостаток для поиска и обновления, в последнем случае для этого потребуется не менее двух обновлений.