Symfony2-Doctrine ManyToMany与3个领域相关

时间:2015-07-14 12:01:52

标签: symfony doctrine-orm many-to-many

我在定义关联映射时遇到问题,我不知道该怎么做才能解决。

我希望在两个对象之间构建一个多对多的关系,但不仅仅是一个字段。

一张表是指人物,另一张表示图像,此关系的目标表示当某人被其他人标记为此图像时

我需要这样的东西:

|标记为| Tagger |照片|

| person_id_1 | person_id_2 | image_id_1 |

| person_id_3 | person_id_2 | image_id_1 |

| person_id_2 | person_id_4 | image_id_2 |

我尝试使用这样的多对多关系:

/**
 * @ORM\ManyToMany(targetEntity="Media")
 * @ORM\JoinTable(name="persons_tagged",
 *  joinColumns={
 *   @ORM\JoinColumn(name="user_tagged", referencedColumnName="id"),
 *   @ORM\JoinColumn(name="user_tagger", referencedColumnName="id")
 *  },
 *  inverseJoinColumns={
 *   @ORM\JoinColumn(name="media_id",referencedColumnName="id")
 *  }
 * )
 **/
 private $employeeTagged;

当我尝试通过控制台更新架构时,它创建了DB中的表但没有外键,因为抛出了外键定义的异常,我必须手动创建外键。

有人有类似的问题或解决方法吗?感谢

1 个答案:

答案 0 :(得分:2)

创建一个新实体,该实体具有图像链接,链接到标记(用户),链接到标记(用户)。

您可能还想添加创建的日期时间,更新的日期时间,此人所在的图像部分,说明/文字等。