ホームページ >PHPフレームワーク >Laravel >Laravel 開発: Laravel を使用してフラグメントをソフト削除および復元する方法は?

Laravel 開発: Laravel を使用してフラグメントをソフト削除および復元する方法は?

WBOY
WBOYオリジナル
2023-06-13 10:41:052065ブラウズ

Laravel 開発: Laravel を使用してフラグメントをソフト削除および復元する方法は?

Laravel フレームワークでは、ソフト削除は非常に実用的な機能であり、データ削除操作を適切に処理するのに役立ちます。実際のアプリケーションでは、一部のデータは本当の意味で削除されず、マークが付けられ、一定の期限内に復元できるだけです。

Laravel は非常に便利なソフト削除メカニズムを提供しており、モデルにソフト削除関連の設定を追加するだけで簡単にソフト削除機能を実装できます。以下では、Laravelを使用してフラグメントをソフトデリートおよび復元する方法を詳しく説明します。

1. モデルのソフト削除を設定します

1. モデルに次のコードを追加します:

use IlluminateDatabaseEloquentSoftDeletes;

class MyModel extends Model
{
    use SoftDeletes;

    protected $dates = ['deleted_at'];

    // ...
}

2. モデルに含まれる Laravel の SoftDeletes トレイトを使用します。ソフト削除機能は、 では自動的に有効になります。

3. $dates 属性は、Laravel フレームワークのデフォルトの日付形式変換です。通常、データベースの日時、日付、またはタイムスタンプのフィールドで使用されます。このフィールドの配列を受け取り、自動的にフィールドを Carbon インスタンスに変換し、フォーマットします。

4. モデルでは、対応するデータテーブルにdeleted_atフィールドが自動的に追加され、削除操作が実行されるとフィールドに現在時刻が設定されることで、ソフト削除機能が実現されます。

2. モデルの論理的に削除されたデータのクエリ

Laravel は、論理的に削除されたデータをクエリする非常に単純な機能を提供します。 withTrashed() をクエリ ステートメントに追加するだけです。

// 获取软删除的对象
MyModel::withTrashed()->where('id', 1)->get();

// 获取全部的对象,包括软删除的
MyModel::withTrashed()->get();

// 只获取软删除的对象
MyModel::onlyTrashed()->get();

3. 論理的に削除されたデータの復元

論理的に削除されたデータを復元する必要がある場合は、restore() メソッドを呼び出す必要があります。

// 恢复某一条被软删除的数据
MyModel::withTrashed()->find($id)->restore();

// 按条件恢复符合条件的数据
MyModel::withTrashed()->where('is_visible', true)->restore();

4.論理的に削除されたデータを完全に削除する

論理的に削除されたデータが不要になった場合は、1 行のコードで完全に削除できます。

// 彻底删除某一条软删除的数据
MyModel::withTrashed()->find($id)->forceDelete();

// 按条件彻底删除符合条件的数据
MyModel::withTrashed()->where('is_visible', true)->forceDelete();

まとめると、Laravel のソフト削除機能とリカバリフラグメント機能を使用すると、実際にデータを削除せずにデータのロールバック可能性を大幅に強化でき、誤操作のリスクを軽減できます。同時に、その実装も非常に簡単で、モデル内で関連する機能を有効にするだけで済みます。

以上がLaravel 開発: Laravel を使用してフラグメントをソフト削除および復元する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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