阅读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']);
}
}
---------------------
作者:南乡子_
来源:优快云
原文:https://blog.youkuaiyun.com/llllllloooooo/article/details/71602889
版权声明:本文为博主原创文章,转载请附上博文链接!