chr*_*_so 3 many-to-many symfony
我有一个项目,我在同一个数据库上有一个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;
Run Code Online (Sandbox Code Playgroud)
但现在我必须与ManyToMany建立这种关系.所以我这样做了:
/**
* @ORM\ManyToMany(targetEntity="MyEntity", mappedBy="myCopiedItem")
*/
protected $mySource;
/**
* @ORM\ManyToMany(targetEntity="MyEntity", inversedBy="mySource")
* @ORM\JoinTable(name="entity_has_copy")
*/
protected $myCopiedItem;
Run Code Online (Sandbox Code Playgroud)
但symfony创建的"entity_has_copy"表只有1个项目(myentity_id),我希望有两个字段"myentity_id"和"selected_myentity_copy_id",它们都来自我的"myentity"表中的实际ID ...
为了在我生成的表中同时拥有两个id,我需要修改什么?
我确定我错过了什么,但我无法弄明白什么:(
注意:实体/表名称已重命名以保护隐私
解决了这个!
我不得不在定义中添加关系......
所以这是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;
Run Code Online (Sandbox Code Playgroud)
希望这能帮助其他有同样问题的人......
如果您想了解更多关于如何使用Doctrine映射实体之间的关联,这里有一个很好的URL!
| 归档时间: |
|
| 查看次数: |
2047 次 |
| 最近记录: |