【发布时间】:2020-03-02 08:53:12
【问题描述】:
背景: 我在管理实体 A 和 B 之间的多对多关系时遇到了很多困难。 我得到了一个 A 实体的表单,其中包含 A 的一些输入字段和一个 CollectionType 来为 B 实体添加表单。 B 表单只有一个字段:它是一个选择输入,用于根据其 name 属性选择 B1 对象。在 A 对象的编辑视图中的选择输入中显示包含 5 个(例如)包含 B 对象的 A 表单没有任何问题。
我的问题是:例如在对象 A1 的编辑视图中,当我将一些 B 选择表单值从 B1 更改为 B2 或任何其他值时,然后提交 A1 表单进行编辑是很好,A1 对象似乎也很好。但是,当我去一个不同的 A 对象(例如 A2)与其他 B 对象组合(特别是其中包括一个 B1 对象)时,我看到一个 B2 对象而不是 B1。然后查了数据库才发现终于把B对象的name属性从B1改成了B2,现在就有了两个同名的B对象了。
我已经尝试过的:
- 使用 B 形式的 ChoiceType 或 EntityType 进行测试
- 用 'by_reference' => false 以 A 形式和/或 B 形式进行测试
- 以B形式结算'choice_label'或'choice_value'
- 在实体 A 和 B 上使用 mappingBy/inversedBy 初始化多对多关系
- 设置 'query_builder' 和/或 'choices'
- ...
- 当然要在很长一段时间内上网搜索
我将不胜感激任何帮助!谢谢
【问题讨论】:
标签: forms symfony many-to-many entity choice