2013-01-09 4 views
1

Doctrine 2.0은 복합 키를 지원합니다. 그러나 나는 내가 무엇을 찾고 있는지 알 수 없다.Doctrine composite primary key

나는 3 개의 테이블 => agent, client 및 client_group이 있습니다.
에이전트가 client 및 client_group을 만듭니다. Client_Group에는 복합 기본 키 => id, agent_id가 있습니다. agent_id는 에이전트 테이블에서옵니다. id를 자동으로 증가 시키려면 agent_id가 에이전트 테이블에서옵니다.
yaml 파일을 쓰려고하는데이 agent_id를 client_group의 기본 키로 지정하는 방법을 모르겠습니다. client_group_id 및 agent_id는 클라이언트 테이블의 외래 키입니다. 또한, 복합 PK가 자동 증분 필드를 가질 수 없다는 Doctrine 문서를 읽었습니다.

그래서 여기에서 생산하려고하는 것을 실제로 할 수 있는지 궁금합니다.

의 관계는 다음과 같이 만 보여주는 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

* "복합 기본 키의 한 필드가 자동으로 생성되기를 원합니다. Doctrine 2.1"*이 지원하지 않는다고 이해합니다. 그게 정확히 내가 원했던 것입니다. 정상적인 것 같습니다. 예를 들어 사용자는 phoneNumbers를 가지며 키의 한 부분은 user_id이고 다른 하나는 자동으로 생성 된 숫자 ID 값입니다. – Wilt

+0

UUID를 사용해야합니다. http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/sharding.html#use-guid-uuids – Bruno