我有两个实体E1& E2具有ManyToMany关系和链接表。一切都很好,直到我尝试添加到不存在的E2的E1元素。例如,E2是Tag实体。用户通过表单放置几个标签。如何在将它们保存到E1之前在E2中添加不存在的标签?
更新
好的,我根据@Axxiss的答案更新了我的实体。它 自动保留新标签,但它也会再次保留旧标签。我想知道的是,如果我有一个名为'tag1'的标签,则不应再在标签表中添加。
答案 0 :(得分:1)
您需要在E1内的标记字段中添加cascade
注释。
在E1中你会有这样的东西:
/**
* @ORM\ManyToMany(targetEntity="Tag", cascade={"persist"})
* @ORM\JoinTable(name="e1_has_tags",
* joinColumns={@ORM\JoinColumn(name="e1_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")}
* )
**/
private $tags;
检查Transitive persistence / Cascade Operations
如果您只想添加一个标签,则有两个选项:
在这两种情况下,您需要按标签名称进行查询,如果标签已存在,则将其替换为找到的标签。
答案 1 :(得分:1)
如果你想要唯一标签,你需要在坚持之前检查它们是否存在。