ThinkPHP5.0的软删除功能
阅读TP的手册实在是有些困难,所以尽量自己试一下,阅读一下框架的源码,才能搞清楚
关于软删除,手册的介绍是这样的
在实际项目中,对数据频繁使用删除操作会导致性能问题,软删除的作用就是把数据加上删除标记,而不是真正的删除,同时也便于需要的时候进行数据的恢复。 要使用软删除功能,需要引入SoftDelete trait
<?php
namespace appcommonmodel;
use thinkModel;
use traitsmodelSoftDelete;
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 appadmincontroller;
use appcommonmodelAdmin;
class Index extends Base {
public function index() {
Admin::destroy(1);
Admin::destroy([1,2,3]);
Admin::destroy(["status"=>"0"]);
}
}
这种删除方法其实就是将delete_time字段写入当前的删除时间,此记录并没有真正删除
但是在定义了软删除之后,以下的删除方式还是将记录真正删除了
<?php
namespace appadmincontroller;
use appcommonmodelAdmin;
class Index extends Base {
public function index() {
$admin = new Admin();
$admin->where("name", "in", ["asd","sss",])->delete();
}
}2、查询
<?php
namespace appadmincontroller;
use appcommonmodelAdmin;
class Index extends Base {
public function index() {
//查询没有被软删除的记录
Admin::select();
//只查询被软删除的记录
Admin::onlyTrashed()->select();
//包含已经被软删除的记录
Admin::withTrashed()->select();
}
}
retore中的参数是where数组
<?php
namespace appadmincontroller;
use appcommonmodelAdmin;
class Index extends Base {
public function index() {
$admin = new Admin();
$admin->restore(["id" => "14"]);
}
}声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
