重复关系如何多对多(表中的第三个键)

时间:2012-12-11 17:57:50

标签: symfony doctrine

在Doctrine2中可以使用第三个键来管理多对多关系,以便能够添加多个识别关系吗?

我有一个“用户”表和另一个“计划”表,我做了正常的多对多关系,生成带有两个主键(user_id和plan_id)的user_plan表但我需要在我的应用程序中能够将同一计划添加到用户不止一次。例如:user_plan(generated_id,user_id,plan_id)

我当前的用户yml定义:

Entity\FosUser:
type: entity
table: fos_user
fields:
    id:
        id: true
        type: integer
        unsigned: false
        nullable: false
        generator:
            strategy: IDENTITY
manyToMany:
    plans:
        targetEntity: Plan
        inversedBy: users
        joinTable:
            name: user_plan
            joinColumns:
                plan_id:
                    referencedColumnName: id
            inverseJoinColumns:
                user_id:
                    referencedColumnName: id

lifecycleCallbacks:
  prePersist: [ setUserValue ]
  preUpdate: []

我目前的计划yml定义:

Entity\Plan:
type: entity
table: plan
fields:
    id:
        id: true
        type: integer
        unsigned: false
        nullable: false
        generator:
            strategy: IDENTITY
    planName:
        type: string
        length: 50
        fixed: false
        nullable: false
        column: plan_name
manyToMany:
    users:
        targetEntity: FosUser
        mappedBy: plans
LifecycleCallbacks:
  prePersist: [ setCreatedAtValue ]
  preUpdate: [ setUpdatedAtValue ]

有人知道是否可以用symfony2做到这一点?

1 个答案:

答案 0 :(得分:0)

我不知道第三把钥匙,但我看到另一种解决方案。您可以添加另一个型号PlantBed。用户has_many PlantBeds(PlantBed has_one User)。 PlantBed拥有一个Plant(Plant has_many PlantBeds)和quantityOfPlantsInBed。