软删除-j9九游

软删除

版本 调整功能
5.0.2 deletetime 属性改为非静态定义

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

要使用软删除功能,需要引入softdelete trait,例如user模型按照下面的定义就可以使用软删除功能:

namespace app\index\model;
use think\model;
use traits\model\softdelete;
class user extends model
{
    use softdelete;
    protected $deletetime = 'delete_time';
}

5.0.2版本之前deletetime属性必须使用static定义。

deletetime属性用于定义你的软删除标记字段,thinkphp5的软删除功能使用时间戳类型(数据表默认值为null),用于记录数据的删除时间。

可以用类型转换指定软删除字段的类型,建议数据表的所有时间字段统一一种类型。

定义好模型后,我们就可以使用:

// 软删除
user::destroy(1);
// 真实删除
user::destroy(1,true);
$user = user::get(1);
// 软删除
$user->delete();
// 真实删除
$user->delete(true);

默认情况下查询的数据不包含软删除数据,如果需要包含软删除的数据,可以使用下面的方式查询:

user::withtrashed()->find();
user::withtrashed()->select();

如果仅仅需要查询软删除的数据,可以使用:

user::onlytrashed()->find();
user::onlytrashed()->select();

如果你的模型定义了base基础查询,请确保添加软删除的基础查询条件。

文档最后更新时间:2018-04-26 10:06:47
网站地图