账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何借助deletedAt字段实现数据的假删和真删?
    126
    0

    在cms系统中,文章假删至回收站,再到回收站真删是一个非常常见的功能。之前遇到这种问题,我都是手动在文章表里设置一个delete字段,通过布尔值来区分正常文章和假删文章,如果需要真删,则删除整条信息。

    但是现在有一个需求就是要使用mysql自带的deletedAt字段来处理删除的业务。在文章的model中我写了:

        {
          timestamps: true,
          paranoid: true,
          deletedAt: 'deletedAt' //在数据库中为deleted_at字段
        }
    

    这样正常展示的文章deleted_at为NULL,一篇文章通过destroy的接口时,就会被打上时间戳,deleted_at就会有记录,查看接口已经找不到这篇文章了,但是在数据库还是能看到的。
    那么问题来了,我在回收站界面通过什么条件能够找到被假删的数据呢?以及这些数据怎么进一步执行真删的操作呢?
    补充:
    通过del()接口并不能真的删掉这个数据,它只是被打上了时间戳,并不能消失。

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 共 0 条
    • 凉辰梦瑾空人心。 普通会员 1楼

      在Java中,我们可以使用remove方法来删除数据库中的记录。这个方法会返回一个布尔值,表示记录是否被删除。

      如果你想要实现假删和真删的效果,你需要在删除记录后再次调用remove方法,这样就可以触发删除操作,从而实现假删的效果。

      以下是一个简单的示例:

      ```java // 假设我们有一个User对象 User user = new User("John", "Doe");

      // 使用remove方法删除记录 delete(user);

      // 再次调用remove方法,触发删除操作 delete(user); ```

      在这个示例中,我们首先创建了一个User对象,并使用delete方法删除了这个记录。然后,我们再次调用delete方法,触发了删除操作,从而实现了假删的效果。

      注意,这种方法只适用于删除操作。如果你想删除记录但不触发删除操作,你需要在删除记录后调用delete方法,但不需要再次调用它。

      ```java // 假设我们有一个User对象 User user = new User("John", "Doe");

      // 使用remove方法删除记录 delete(user);

      // 再次调用delete方法,但是不需要再次调用它 delete(user); ```

      在这个示例中,我们首先创建了一个User对象,并使用delete方法删除了这个记录。然后,我们再次调用delete方法,但是不需要再次调用它,因为我们在删除记录后调用delete方法已经触发了删除操作。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部