ThinkPHP 3.2 添加软删除功能

2022-09-26 10:56:57 浏览数 (1)

ThinkPHP 3.2 添加软删除功能

作者:matrix 被围观: 3,741 次 发布时间:2016-12-31 分类:零零星星 | 无评论 »

这是一个创建于 2070 天前的主题,其中的信息可能已经有所发展或是发生改变。

类似于TP5框架的软删除功能

软删除的作用就是把数据加上删除标记,而不是真正的删除,同时也便于需要的时候进行数据的恢复。

这里以数据库表Dynamics为例

执行SQL语句给表新建字段delete_time:

ALTER TABLE sx_dynamics ADD `delete_time` char(13) DEFAULT NULL COMMENT '删除时间';

新建Model层文件

代码语言:javascript复制
<?php 
/**
 * Created by PhpStorm.
 * User: pang
 */
namespace HomeModel;

use ThinkModel;
use ThinkPage;

class DynamicsModel extends Model
{
    /**
     * 重写Model删除方法 实现TP5类似的软删除
     *
     * @param bool $trueDel 是否真实删除数据
     * @return mixed
     */
    public function delete($trueDel = false)
    {
        if ($trueDel) {
            return parent::delete();
        }
        $data['delete_time'] = time();
        return parent::save($data);
    }
}

在Controller层

//使用D()方法实例化Model 调用重写的delete 软删除方法

D('dynamics')->where($w)->delete();

查询的where条件:

代码语言:javascript复制
$where['delete_time'] = array('exp', 'IS NULL');//没有删除的数据
$where['delete_time'] = array('exp', 'IS NOT NULL');//已经删除的数据

-EOF-

for mac

0 人点赞