主义复合主键

时间:2013-01-09 20:14:58

标签: doctrine-orm composite-key composite-primary-key

我知道Doctrine 2.0支持复合键。但我无法找到我要找的东西。

我有3张桌子=> agent,client和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不能包含自动递增的字段。

所以,如果我真的可以做我想在这里制作的东西,那么我很想。

只显示关系的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

对此的任何帮助都会受到重视。感谢。

1 个答案:

答案 0 :(得分:9)

文档中就是这样。我的问题的答案是使用associationKey。

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

如果你在上面的链接上找到动态属性,解决方案就在那里。然而,限制是,我希望自动生成复合主键的一个字段,我理解,Doctrine 2.1不支持。