ホームページ  >  記事  >  PHPフレームワーク  >  Laravelフレームワークで論理的な削除を実装する方法

Laravelフレームワークで論理的な削除を実装する方法

PHPz
PHPzオリジナル
2023-03-31 17:16:491786ブラウズ

Laravel は、開発者に多くの便利な機能を提供する強力な PHP フレームワークです。中でもソフトデリートは非常に便利な機能です。この記事では、Laravelフレームワークでソフトデリートを実装する方法を紹介します。

論理的な削除とは、レコードを実際に削除するのではなく、レコードを削除済みとしてマークすることを指します。これにより、データの整合性を維持しながら、削除されたレコードを回復する機会が得られます。レコードを直接削除すると依存関係が生じる可能性があるため、論理的な削除は非常に良い選択です。

まず、Laravel で論理的な削除を有効にするには、モデルで SoftDeletes 機能を使用する必要があります。

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class User extends Model
{
    use SoftDeletes;

    protected $dates = ['deleted_at'];
}

上の例では、use SoftDeletes を使用して論理的な削除を有効にし、論理的な削除を保存するためにモデルで使用される deleted_at 属性を定義しました。 削除のタイムスタンプ。

SoftDeletes 機能を有効にすると、Laravel の delete() メソッドを使用して論理的な削除を実行できます。このメソッドは、deleted_at 属性を現在のタイムスタンプに設定します。論理的に削除されたレコードを復元するには、Laravel の restore() メソッドを使用する必要があります。

// 在模型中软删除一个记录
$user = User::find(1);
$user->delete();

// 恢复一个软删除的记录
$user = User::withTrashed()->where('id', 1)->first();
$user->restore();

上記のコードでは、まず delete() メソッドを使用してレコードをソフト削除します。次に、withTrashed() メソッドを使用して論理的に削除されたレコードを取得し、次に restore() メソッドを使用してレコードを復元します。

テーブルからデータを取得する場合、通常、削除されたレコードが返されることは望ましくありません。 Laravel の onlyTrashed() メソッドを使用すると、削除されたレコードのみをリストできます。削除されたレコードを含むすべてのレコードを一覧表示するには、withTrashed() メソッドを使用します。

// 获取只删除的记录
$deletedUsers = User::onlyTrashed()->get();

// 获取所有记录,包括已删除的记录
$allUsers = User::withTrashed()->get();

Laravel は、論理的に削除されたレコードを強制的に削除する forceDelete() メソッドも提供します。このメソッドは、単に deleted_at 属性を現在のタイムスタンプに設定するのではなく、データベースからレコードを完全に削除します。

// 永久删除一个已删除记录
$user = User::withTrashed()->where('id', 1)->first();
$user->forceDelete();

この記事では、Laravel で論理的な削除を有効にして使用する方法を学びました。論理的な削除によりデータの整合性が向上し、削除されたレコードを簡単に回復できます。実際のプロジェクトでは、ソフト削除はプロジェクトのニーズに応じて使用できる非常に便利な機能です。

以上がLaravelフレームワークで論理的な削除を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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