PHP 算法,用于使用新条目更新数据库记录并删除丢失的记录,而不删除当前保存的条目

在数据库中,我有多个问题的答案值:

问题1 -> 答案1 答案2

问题2 -> 答案3 答案4 答案5

--

现在用户提交了对这些答案的更新:

问题1 -> 答案1 答案2 答案6

问题2 -> 答案3 答案4

--

那么,做出这些改变的最佳方式是什么?我需要删除丢失的条目,添加新条目而不删除旧值。

最简单的方法是删除所有旧答案并编写新答案。但我的系统具有软删除功能,因此删除的条目并未真正删除,只是标有删除日期。如果我这样做,数据库表增长得非常快,因为每次用户进行更新时它都会写入数十个新条目。

我能想到的另一种方法是分两次迭代进行:第一次将保存的值与新值进行比较,如果找不到匹配则删除保存的值。第二次迭代将新值与旧值以及缺少的所有内容进行比较。

但也许还有更实用、更有效的方法呢?


慕姐4208626
浏览 83回答 1
1回答

侃侃尔雅

您可以使用 symfony 属性访问器组件来为您处理差异计算。在您的问题对象上,您必须实现getAnswers()读取值的方法、addAnswer($answer)添加单个答案的方法和removeAnswer($answer)删除单个答案的方法。然后,在您的控制器/服务/命令中,您必须注入属性访问器(PropertyAccessorInterface)并调用$propertyAccess->setValue($question, 'answers', $newAnswers);这将仅针对更改的值调用加法器和移除器。
打开App,查看更多内容
随时随地看视频慕课网APP