【发布时间】:2016-07-16 22:00:54
【问题描述】:
所以,这是我的情况。我有 3 个表,tag、product 和 tag_product,它们是由 tag 和 product 之间的“多对多”关系的注释创建的,即可以关联 tag有很多产品,一个产品可以有很多与之关联的标签。
现在,每当用户想要编辑产品时,我正在使用数据转换器将 Tag 对象转换为由逗号分隔的标签组成的字符串。
在Tag 实体中,我有一个主键、一个ID 和一个唯一字段,即标记的名称。我本质上不想有两个同名的标签。
我的问题是,当提交表单以更新产品时,我不知道如何访问用户选择的“新”标签。有没有办法做到这一点?访问请求可能仅对访问标签的输入字符串有用,而不是在数据转换器中从该字符串创建的 Tag 对象。
我也可以将当前的$product 对象传递给buildForm,这会将它传递给上面提到的数据转换器,但这似乎不是一个好的解决方案,当一个对象被传递时(至少对我来说)。此外,我需要从数据转换器创建另一个实体管理器,并做数据转换器不应该做的事情。
有更好的想法吗?
编辑
我只是想也许我可以在将标签插入产品的ArrayCollection 时检查是否相同的ArrayCollection 已经包含与正在插入的标签同名的标签,但是因为我没有'不知道那个集合是否已经被当前标签填充了,那一刻......
编辑 2
我想,之前编辑中的解决方案对我不起作用,因为插入新标签时该数组集合为空......
【问题讨论】:
标签: php symfony doctrine-orm many-to-many