我正在尝试将sonata_type_collection
字段用于与食谱相关的成分列表。遇到两个问题:
sortable参数适用于拖放重新排序,但我无法获取项目 实际按该列排序的关联。
删除复选框无法删除关联。
关联是ManyToOne
,因为参考表的数据不仅仅是对Recipe表的简单引用,否则我会使用ManyToMany
。
sortable
参数运行良好,使行可拖动,但该列的成分列表不是排序。因此,虽然它保存了position
列,但它实际上并没有按顺序显示它们。
我试图找到一种简单的方法来挂钩PersistentCollection
以过滤它。我发现matching()
函数有效,但它没有修改底层集合,它只返回ArrayCollection
。这不起作用,因为我无法用PersistentCollection
替换ArrayCollection
。
此外,删除功能无法开箱即用。我不得不手动覆盖RecipeAdmin::preUpdate($object)
并手动删除已删除的成分并刷新实体管理器。
我觉得应该有一个更简单的方法来做这一切。
更新:我今天发现@OrderBy
注释解决了排序问题
答案 0 :(得分:2)
始终确保在OneToMany字段定义中设置orphanRemoval = true,否则删除复选框将无效。