在数据库中,我有多个问题的答案值:问题1 -> 答案1 答案2问题2 -> 答案3 答案4 答案5--现在用户提交了对这些答案的更新:问题1 -> 答案1 答案2 答案6问题2 -> 答案3 答案4--那么,做出这些改变的最佳方式是什么?我需要删除丢失的条目,添加新条目而不删除旧值。最简单的方法是删除所有旧答案并编写新答案。但我的系统具有软删除功能,因此删除的条目并未真正删除,只是标有删除日期。如果我这样做,数据库表增长得非常快,因为每次用户进行更新时它都会写入数十个新条目。我能想到的另一种方法是分两次迭代进行:第一次将保存的值与新值进行比较,如果找不到匹配则删除保存的值。第二次迭代将新值与旧值以及缺少的所有内容进行比较。但也许还有更实用、更有效的方法呢?
1 回答

侃侃尔雅
TA贡献1801条经验 获得超16个赞
您可以使用 symfony 属性访问器组件来为您处理差异计算。
在您的问题对象上,您必须实现getAnswers()
读取值的方法、addAnswer($answer)
添加单个答案的方法和removeAnswer($answer)
删除单个答案的方法。
然后,在您的控制器/服务/命令中,您必须注入属性访问器(PropertyAccessorInterface
)并调用$propertyAccess->setValue($question, 'answers', $newAnswers);
这将仅针对更改的值调用加法器和移除器。
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消