我有一个项目,我在同一个数据库上有一个OneToMany关系。
目前它的设计如下:
/**
* @ORM\OneToMany(targetEntity="MyEntity", mappedBy="myCopiedItem")
*/
protected $mySource;
/**
* @ORM\ManyToOne(targetEntity="MyEntity", inversedBy="mySource")
* @ORM\JoinColumn(name="selected_myentity_copy_id", referencedColumnName="id")
*/
protected $myCopiedItem;
但现在我必须与ManyToMany建立这种关系。所以我这样做了:
/**
* @ORM\ManyToMany(targetEntity="MyEntity", mappedBy="myCopiedItem")
*/
protected $mySource;
/**
* @ORM\ManyToMany(targetEntity="MyEntity", inversedBy="mySource")
* @ORM\JoinTable(name="entity_has_copy")
*/
protected $myCopiedItem;
但symfony创建的“entity_has_copy”表只有1个项目(myentity_id),我希望有2个字段“myentity_id”& “selected_myentity_copy_id”这两个都是来自我的“myentity”表的实际ID ...
为了在我生成的表中同时拥有两个id,我需要修改什么?
我确定我错过了什么,但我无法弄明白:(
注意:实体/表名称已重新命名为隐私
答案 0 :(得分:5)
解决了这个问题!
我必须在定义中添加关系......
所以这是JoinTable部分的正确定义:
/**
* @ORM\ManyToMany(targetEntity="MyEntity", inversedBy="mySource")
* @ORM\JoinTable(name="entity_has_copy",
* joinColumns={@ORM\JoinColumn(name="entity_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="entity_copy_id", referencedColumnName="id")}
* )
*/
protected $myCopiedItem;
希望这会有助于其他有同样问题的人......
如果您想了解更多关于如何使用Doctrine映射实体之间的关联,请参阅a good URL!