在數據庫中,我有多個問題的答案值:問題1 -> 答案1 答案2問題2 -> 答案3 答案4 答案5--現在用戶提交了對這些答案的更新:問題1 -> 答案1 答案2 答案6問題2 -> 答案3 答案4--那么,做出這些改變的最佳方式是什么?我需要刪除丟失的條目,添加新條目而不刪除舊值。最簡單的方法是刪除所有舊答案并編寫新答案。但我的系統(tǒng)具有軟刪除功能,因此刪除的條目并未真正刪除,只是標有刪除日期。如果我這樣做,數據庫表增長得非??欤驗槊看斡脩暨M行更新時它都會寫入數十個新條目。我能想到的另一種方法是分兩次迭代進行:第一次將保存的值與新值進行比較,如果找不到匹配則刪除保存的值。第二次迭代將新值與舊值以及缺少的所有內容進行比較。但也許還有更實用、更有效的方法呢?
1 回答

侃侃爾雅
TA貢獻1801條經驗 獲得超16個贊
您可以使用 symfony 屬性訪問器組件來為您處理差異計算。
在您的問題對象上,您必須實現getAnswers()
讀取值的方法、addAnswer($answer)
添加單個答案的方法和removeAnswer($answer)
刪除單個答案的方法。
然后,在您的控制器/服務/命令中,您必須注入屬性訪問器(PropertyAccessorInterface
)并調用$propertyAccess->setValue($question, 'answers', $newAnswers);
這將僅針對更改的值調用加法器和移除器。
- 1 回答
- 0 關注
- 124 瀏覽
添加回答
舉報
0/150
提交
取消