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"]); } }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。