Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony2条令多个,有3个相关字段_Symfony_Doctrine Orm_Many To Many - Fatal编程技术网

Symfony2条令多个,有3个相关字段

Symfony2条令多个,有3个相关字段,symfony,doctrine-orm,many-to-many,Symfony,Doctrine Orm,Many To Many,我在定义关联映射时遇到问题,我不知道该怎么解决 我想在两个对象之间建立一个多对多的关系,但不仅仅是一个字段 一个表引用人,另一个表引用图像,当一个人被其他人为此图像标记时,表示此关系的目标 我需要这样的东西: /** * @ORM\ManyToMany(targetEntity="Media") * @ORM\JoinTable(name="persons_tagged", * joinColumns={ * @ORM\JoinColumn(name="user_tagged",

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

我想在两个对象之间建立一个多对多的关系,但不仅仅是一个字段

一个表引用人,另一个表引用图像,当一个人被其他人为此图像标记时,表示此关系的目标

我需要这样的东西:

/**
 * @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;

|标记|标记者|照片| |人物身份1 |人物身份2 |形象身份1| |人物标识3 |人物标识2 |形象标识1| |人物识别号2 |人物识别号4 |图像识别号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;
当我试图通过控制台更新模式时,数据库中的表被创建,但没有外键,因为外键定义的异常被抛出,我必须手动创建外键


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

创建一个新实体,该实体具有指向图像的链接、指向标记者的链接(用户)、指向标记者的链接(用户)


您可能还需要添加创建的日期时间、更新的日期时间、此人所在的图像部分、描述/文本等。

实际上,这听起来是我最简单的解决方案。我完全同意这个答案。我过去也用过同样的方法。您只需将多对多分解为多对一+一对多。