2013-06-28 2 views
1

많은 bankAccount 개체가있는 회사 개체가 있습니다. 그러나 한 회사는 활성 bankAccount를 하나만 가질 필요가 있습니다.Doctrine2 - 기본값과의 일대 다 관계

회사 개체의 활성 bankAccount를 표시하는 올바른 방법은 무엇입니까?

현재 구현에서는 activeTankAccount라는 초기에 nullable 인 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

제 생각에는 두 가지 옵션이 있습니다. 첫 번째는 귀하의 것이며, 활성 은행 계좌를 쉽게 검색하거나 업데이트 할 수있는 이점이 있습니다 (단일 쿼리 또는 업데이트 만 필요함). 불행히도 banksaccount 컬렉션에 속하지 않는 activeBankAccount를 설정할 수있는 방법은 없습니다. 또 다른 방법은 bankaccount 클래스에 활성 속성을 직접 추가하는 것입니다. 그러나 이것은 검색 및 업데이트에 대한 단점이 있으며,이 경우에는 적어도 두 가지 업데이트가 필요합니다.