2016-04-01 5 views
0

は、私は次のエンティティを持っています。そのため、実際には「CUSTOMER_ID」フィールドは、ORMのレベルではありません教義2 ManyToOne multipy JoinColumns

Column name `customer_id` referenced for relation from MyBundle\Entity\Customer towards MyBundle\Entity\Account does not exist. 

:私は、デフォルトの顧客アカウントは、この顧客に属していることを保証するために、乗算フィールドで外部キーを使用したいが、私は次のエラーを取得しています"customer.id"ですが、それを参照する方法はわかりません。

答えて

0

@ORM\JoinColumn(name="id",referencedColumnName="customer_id"),は冗長であるようです。次のようにこのフィールドを設定するようにしてください:

/** 
* @var Account 
* 
* @ORM\OneToOne(targetEntity="Account") 
* 
* @ORM\JoinColumn(name="default_account_id", referencedColumnName="id") 
*/ 
private $defaultAccount; 

をちなみに、私は、あなたは自分のAccount実体にブール列is_defaultを追加した場合、それが良いだろうと思います。

+0

私は1つの外部キーを使用する場合、デフォルトのアカウントが他の顧客からのものである可能性があります。したがって、2つのフィールドの外部キーを追加して、既定のアカウントがデータベースレベルの現在の顧客に属していることを確認することをお勧めします。 –

+0

この場合、双方向の一対一の関連付けが必要です。 –

+0

SQLの単語で私は必要があります: ALTER TABLE public.customer ADD CONSTRAINT fk_1 FOREIGN KEY(default_account_id、id)参照public.account(id、customer_id) –