2013-01-09 113 views
1

我知道學說2.0支持複合鍵。但是我不太清楚我在找什麼。學說複合主鍵

我有3個表=>劑,客戶端和client_group。
代理創建客戶端和client_group。 Client_Group具有複合主鍵=> id,agent_id。 agent_id來自代理表。雖然我希望id自動遞增,但agent_id來自代理表。
我正在嘗試編寫yaml文件,但我不確定如何將此agent_id指定爲client_group中的主鍵。 client_group_id和agent_id是客戶端表中的外鍵。另外,我在Doctrine文檔中看過複合PK不能有自動增量的字段。

所以我wondring如果我真的可以做我的目標在這裏產生。

只顯示關係是這樣的YAML:

劑:

oneToMany: 
    client_group: 
     targetEntity: ClientGroup 
     mappedBy: agent 
    client: 
     targetEntity: Client 
     mappedBy: agent 

client_group

manyToOne: 
    agent_id: 
     targetEntity: Agent 
     inversedBy: client_group 
     joinColumn: 
     name: agent_id 
     referencedColumnName: id 

    oneToMany: 
    client: 
     targetEntity: Client 
     mappedBy: client_group 

客戶端上這

manyToOne: 
    client: 
     targetEntity: ClientGroup 
     inversedBy: client 
     joinColumn: 
     name: client_group_id 
     referencedColumnName: id 
    agent: 
     targetEntity: Agent 
     inversedBy: agents 
     joinColumn: 
     name: agent_id 
     referencedColumnName: id 

任何幫助將aprreciated。謝謝。

回答

7

這是在文檔中就在這裏。我的問題的答案是通過使用associationKey。

http://doctrine-orm.readthedocs.org/en/stable/tutorials/composite-primary-keys.html

如果你去到動態上面的鏈接屬性,解決的辦法是在那裏。然而,這個限制是,我希望自動生成複合主鍵的一個字段,我知道這不是由Doctrine 2.1支持的。

+1

*「我想要的複合主鍵的一個字段被自動生成的,我的理解是不教條2.1支持」 *,這正是whay我想太...這似乎是一個正常的事情。例如,用戶擁有phoneNumbers,其中一部分關鍵字是user_id,另一部分是自動生成的數字Id值。 – Wilt

+0

你必須使用UUID我猜:http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/sharding.html#use-guid-uuids – Bruno