3

我知道 Doctrine 2.0 支持复合键。但我不太能够找出我在寻找什么。

我有 3 个表 => 代理、客户端和 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

客户组

  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

对此的任何帮助将不胜感激。谢谢。

4

1 回答 1

9

它就在文档中。我的问题的答案是使用关联密钥。

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

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

于 2013-01-10T17:32:34.993 回答