ThinkPHP 프레임워크에서 소프트 삭제 구현 방법

PHPz
풀어 주다: 2023-04-14 10:33:06
원래의
1278명이 탐색했습니다.

웹 애플리케이션을 개발할 때 일반적으로 데이터를 추가, 삭제, 수정, 확인해야 하는데, 데이터 삭제는 매우 중요한 작업 중 하나입니다. 하지만 실제 프로젝트에서는 삭제된 데이터를 복구해야 하는 경우가 많기 때문에 기존의 물리적 삭제 작업은 불편합니다.

이 문제에 대응하여 ThinkPHP 프레임워크는 삭제 작업을 표시된 삭제 작업으로 변환하는 소프트 삭제 기능을 제공합니다. 이러한 방식으로 삭제된 데이터는 데이터베이스에서 실제로 사라지지 않고 삭제 상태를 추가합니다. 데이터 테이블은 필요할 때 복원됩니다.

다음으로 ThinkPHP 프레임워크의 소프트 삭제 관련 구현을 살펴보겠습니다.

1. 일시 삭제 구현 방법

  1. 데이터베이스에 삭제 상태를 나타내는 필드 추가

일시 삭제가 필요한 테이블에 삭제 상태를 나타내는 필드를 추가합니다. 예:

ALTER TABLE `table_name` ADD `delete_time` BIGINT(20) UNSIGNED DEFAULT NULL COMMENT '删除时间';
로그인 후 복사

그 중 , delete_time 필드는 삭제 작업 시간을 기록하는 데 사용됩니다. 이 필드가 비어 있지 않으면 데이터가 삭제되었음을 의미합니다.

  1. 모델 파일에서 소프트 삭제 매개변수 설정

모델 파일에서 소프트 삭제 매개변수를 설정해야 삭제 작업을 수행할 때 매개변수가 자동으로 업데이트됩니다. 예:

namespace app\common\model;
use think\Model;
use traits\model\SoftDelete;
class User extends Model
{
    use SoftDelete;
    protected $deleteTime = 'delete_time'; // 表示删除时间的字段名称
    protected $defaultSoftDelete = 0; // 表示未删除状态的值
}
로그인 후 복사

그 중 $deleteTime 변수는 삭제 시간의 필드 이름을 나타내고, $defaultSoftDelete 변수는 삭제 취소 상태의 값을 나타냅니다. 이 매개변수가 설정되지 않은 경우 기본값은 0입니다.

  1. 소프트 삭제 작업 수행

소프트 삭제가 필요한 경우 모델 클래스에서 제공하는 삭제 메서드를 사용하여 삭제 작업을 수행할 수 있습니다. 예:

$user = User::get($id); // 根据id获取用户实体
$user->delete(); // 执行软删除
로그인 후 복사

일시 삭제 작업이 실행된 후 delete_time 필드가 현재 타임스탬프로 업데이트되어 데이터가 삭제되었음을 나타냅니다.

  1. 일시 삭제된 데이터 쿼리

일시 삭제된 데이터를 쿼리해야 하는 경우 withTrashed 메서드를 사용하여 쿼리할 수 있습니다. 예:

// 查询所有的用户数据(包含已经软删除的数据)
$userList = User::withTrashed()->select();
foreach ($userList as $user) {
    if ($user->delete_time) { // 判断是否已经被软删除
        // 如果已经被软删除,则进行相应的处理
    } else {
        // 如果未被软删除,则进行相应的处理
    }
}
로그인 후 복사

withTrashed 메소드를 통해 일시 삭제되지 않은 데이터와 일시 삭제된 데이터를 포함한 모든 사용자 데이터를 가져올 수 있습니다.

  1. 일시 삭제된 데이터 복구

일시 삭제된 데이터를 복구해야 하는 경우 모델 클래스에서 제공하는 복원 메서드를 사용하여 복구 작업을 수행할 수 있습니다. 예:

$user = User::onlyTrashed()->where('id', $id)->find(); // 根据id获取已经被软删除的用户实体
$user->restore(); // 执行数据恢复
로그인 후 복사

일시 삭제된 데이터 복구 작업이 실행된 후 해당 delete_time 필드의 값이 지워져 데이터가 복구되었음을 나타냅니다.

2. 요약

소프트 삭제 작업을 통해 데이터의 무결성을 유지하면서 데이터를 삭제할 수 있으며, 필요한 경우 삭제된 데이터를 복원할 수 있습니다. ThinkPHP 프레임워크에서 소프트 삭제 구현은 매우 간단합니다. 데이터베이스에 해당 필드를 추가하고 모델 클래스의 소프트 삭제 매개변수를 설정하기만 하면 소프트 삭제 기능의 편리함을 누릴 수 있으며 개발 효율성이 향상됩니다. , 개발 시간을 절약할 수 있습니다.

위 내용은 ThinkPHP 프레임워크에서 소프트 삭제 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿