2016-03-08 109 views
0

我有2个多对多关系的学说实体。当我编辑第一个实体时,我希望能够选择具有来自第二个实体的数据的复选框来建立特定条目的连接。学说2更新关系多对多(不含Symfony)

它可以在创建新条目(使用数组集合)的罚款,但是当我要编辑条目 - 它补充说,我已无需删除先前选择(取消选中)选中的人。

哪种方式会做到这一点,如何以正确的方式?

  1. 删除正在更新的条目的所有连接表数据,然后设置新数据。 (我怎样才能从连接表中删除该 不是实体?)
  2. 从第二实体传递的所有数据,并删除 那些没有被选中(似乎超笨拙?)
  3. 其他一些我不知道的方式?
我不使用的Symfony

,只是学说。

回答

1

主义使得与许多-to-many关联很容易的工作。你的关联存储在一个ArrayCollection类中,该类有一些可以帮助你的方法。首先,检查所有可用的ArrayCollection方法here (Doctrine API - ArrayCollection)

在你的情况下,我会使用这种方法:在你的ArrayCollection上使用clear方法,该方法包含与第二个实体的关系,并使用checked元素。之后,在entitymanager上调用flush方法。

另一种方法在于过滤您的收藏(与过滤法)用于获取仅包含被检查的元素的全新的ArrayCollection。像第一种方法一样,将这个新集合与关系的ArrayCollection关联,并在entitymanager上调用flush方法。

+0

太棒了,谢谢!不知何故,我没有发生ArrayCollection有更多的方法比“包含”和“toArray”=) 我已经使用了第一个解决方案,它完美的作品。 –