在PHP CRUD应用程序中实现撤消功能的最佳方法是什么?我能想出的唯一解决方案是在我的数据库中使用一种定期擦除的缓冲区表。
例如,如果用户在删除一条记录后单击“撤消”按钮,最后一次更改的id将被传递给一个处理程序,该处理程序将拉出缓冲区记录并将其恢复到该数据类型的主表中。如果“撤消”在4或5分钟内没有完成,收割者脚本将删除该条目。
这听起来可行吗?有没有更好的方法来完成这件事?
可以使用数据库中的标志字段标记要删除的行。
您还可以设置task(linux中的crontab)来删除所有行,删除标志设置为true,time difference>设置为5分钟。
我已经学会了不删除任何内容,而是像Ignacio Ocampo所说的那样,在数据库中使用一个标志列(如status)。默认情况下,将“状态”列设置为“打开”。如果您的客户单击删除按钮,只需将记录状态列更新为void或deleted。
在执行此操作时,您需要更新数据请求,以仅拉取status列设置为Open的那些记录。这使得数据既不会丢失,也不会被看到。
所有撤消或重做(如果适用)都可以将打开状态重置为按时间戳列排序的-或+1记录。
如果db空间非常重要,并且需要删除旧的数据,那么crontab可以工作,但我更喜欢简单的phpmyadmin conjob循环一个文件,该文件将清除所有早于time()-'(上次cron运行)的无效记录或已删除记录。