thinkphp软删除

在thinkphp5中是通过softdelete trait实现数据软删除的。在使用中需要在模型定义中引入softdelete trait,并添加protected $deleteTime = 数据库字段,即可实现数据的软删除操作。软删除后,通过sql查看数据库表发现,在相应的字段中添加了时间戳内容。

使用软删除的好处是在执行查询时,系统默认过滤掉软删除数据,会在sql语句中自动添加deleteTime is null.

通常开发中我们会给类似status的字段标识来记录数据是否可用状态,软删除则是通过deletetime的isnul属性来判断,如果我们没有约定俗称数据要软删除,那么多人合作开发就会出现问题,因为“”软删除仅对模型的删除方法有效,如果直接使用数据库的删除方法则无效,例如下面的方式无效(将不会执行任何操作)”。

$user = new User;
$user->where('id',1)->delete();
这句在tp5.1的手册中添加的,5.0手册没有这句
因为使用了->where就是使用了Db类,所以这个删除不会进行任何操作
thinkphp的delete方法默认没有条件是不执行删除的,软删除自带的destory是通过主键来删除的,所以批量删除我最后使用了update,修改状态的同时记录删除时间。
方法没有高明之处,仅仅记录遇到的一个坑,大神可以指导,虚心人不怪


BY QNAN
posted @ 2019-12-31 23:14  WidgetBox  阅读(1224)  评论(0编辑  收藏  举报