3

Doctrine 2.0 が複合キーをサポートしていることは知っています。しかし、私は自分が探しているものを見つけることができません。

3 つのテーブル => エージェント、クライアント、および 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

これに関する任意の助けが感謝されます。ありがとう。

4

1 に答える 1

9

ドキュメントにちゃんとありました。私の質問に対する答えは、associationKey を使用することでした。

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

上記のリンクの動的属性に移動すると、解決策がそこにあります。ただし、制限として、複合主キーの 1 つのフィールドを自動生成する必要がありましたが、これは Doctrine 2.1 ではサポートされていません。

于 2013-01-10T17:32:34.993 に答える