ThinkPHP5.0的软删除功能

阅读TP的手册实在是有些困难,所以尽量自己试一下,阅读一下框架的源码,才能搞清楚


关于软删除,手册的介绍是这样的

在实际项目中,对数据频繁使用删除操作会导致性能问题,软删除的作用就是把数据加上删除标记,而不是真正的删除,同时也便于需要的时候进行数据的恢复。

要使用软删除功能,需要引入SoftDelete trait


我新建了一个表my_admin,下面是对应的model

<?php
    namespace app\common\model;

    use think\Model;
    use traits\model\SoftDelete;

    class Admin extends Model {
        protected $table = 'my_admin';
        protected $deleteTime = 'delete_time';

        use  SoftDelete;

    }

$deleteTime 表示你的表中用来标记的删除时间的字段名, 注意数据类型为int,而不是手册中的    时间戳类型 我试了一下,如果设置成timestamp,写入的时间是0000-00-00 00:00:00)


1、删除

<?php
    namespace app\admin\controller;
    use app\common\model\Admin;

    class Index extends Base {

        public function index() {
            Admin::destroy(1);
            Admin::destroy([1,2,3]);
            Admin::destroy(['status'=>'0']);
        }
    }

这种删除方法其实就是将delete_time字段写入当前的删除时间,此记录并没有真正删除


但是在定义了软删除之后,以下的删除方式还是将记录真正删除了

<?php
    namespace app\admin\controller;

    use app\common\model\Admin;

    class Index extends Base {

        public function index() {
            $admin = new Admin();
            $admin->where('name', 'in', ['asd','sss',])->delete();
        }

    }


2、查询

<?php
    namespace app\admin\controller;

    use app\common\model\Admin;

    class Index extends Base {

        public function index() {

            //查询没有被软删除的记录
            Admin::select();

            //只查询被软删除的记录
            Admin::onlyTrashed()->select();

            //包含已经被软删除的记录
            Admin::withTrashed()->select();
        }

    }



3、恢复被软删除的记录

retore中的参数是where数组

<?php
    namespace app\admin\controller;

    use app\common\model\Admin;

    class Index extends Base {

        public function index() {
            $admin = new Admin();
            $admin->restore(['id' => '14']);
        }

    }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值