thinkphp 模型软删除 和 模型事件

软删除

namespace app\model;

use think\Model;
use think\model\concern\SoftDelete;

class User extends Model
{

    // 开启软删除
    use SoftDelete;
    // 软删除 给数据标记已删除 但不是真的删除 会存在数据库中 但是不会被查询出来
    // deleteTime 绑定表里自定义的时间字段名 delete_time
    //  protected $defaultSoftDelete = 0; 软删除的默认值
    protected $deleteTime = 'delete_time';

     // 初始化模型的一些操作
    public static function init()
    {
        // echo 'init2222';
    }
}

使用的地方 控制器里
        $user = new User();
        // 删除id为3的数据 删除多条[1,2,3,4]
        // $user->destroy([1,2,3,4]);

        // 真实删除
        // $user->destroy(1,true);

        // 软删除
        // $user->delete();

        // 真实删除
        // $user->force()->delete();

        // 查询包括软删除的数据
        // echo $user->withTrashed()->select();

        // 只查询软删除的数据
        // echo $user->onlyTrashed()->select();

        // 恢复单个软删除的数据
        // $user = User::onlyTrashed()->find(1);
        // $user->restore();

        // 恢复所有软删除的数据
        // $user = User::onlyTrashed()->select();
        // foreach ($user as $user) {
        //    $user->restore();
        // }
        // echo $user->select();

        // 软删除后 需要真删除数据 先恢复 再删除

事件

    // 回调事件
    // 命名规则 onAfterRead
    // after_read    	查询后	onAfterRead
    // before_insert	新增前	onBeforeInsert
    // after_insert 	新增后	onAfterInsert
    // before_update	更新前	onBeforeUpdate
    // after_update 	更新后	onAfterUpdate
    // before_write	    写入前	onBeforeWrite
    // after_write	    写入后	onAfterWrite
    // before_delete	删除前	onBeforeDelete
    // after_delete 	删除后	onAfterDelete
    // before_restore	恢复前	onBeforeRestore
    // after_restore	恢复后	onAfterRestore
    public static function onAfterRead($user)
    {
        echo '执行了' . $user['name'] . '的查询操作';
    }

posted on 2024-01-19 01:34  完美前端  阅读(36)  评论(0编辑  收藏  举报

导航