ホームページ PHPフレームワーク ThinkPHP ThinkPHPフレームワークにおけるソフトデリートの実装方法

ThinkPHPフレームワークにおけるソフトデリートの実装方法

Apr 14, 2023 am 10:31 AM

Webアプリケーションを開発する際には、通常、データの追加、削除、変更、確認が必要ですが、データの削除は非常に重要な作業の一つです。ただし、実際のプロジェクトでは、削除されたデータを回復する必要があることがよくあるため、従来の物理的な削除操作は不便です。

この問題に対応して、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. ソフト削除操作の実行

ソフト削除が必要な場合は、モデル クラスが提供する delete メソッドを使用して削除操作を実行できます。例:

$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 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)