ホームページ >PHPフレームワーク >Laravel >laravelの論理削除フィールドが他のフィールドに変更されました

laravelの論理削除フィールドが他のフィールドに変更されました

WBOY
WBOYオリジナル
2023-05-20 19:58:36721ブラウズ

Laravel は、開発者が効率的でスケーラブルで保守が容易な Web アプリケーションを開発するのに役立つ多くの強力な機能と使いやすいツールを提供する人気の PHP フレームワークです。 Laravel の論理的な削除機能は、開発者がデータベースの整合性を破壊することなくデータベース内のデータを簡単に削除できる非常に便利な機能です。ただし、開発者は特定のニーズに合わせて、Laravel の論理削除フィールドを別の名前に変更する必要がある場合があります。この記事では、Laravelの論理削除フィールドを別の名前に変更する方法を紹介します。

Laravel ソフト削除

Laravel では、実際にデータベースからデータを削除するのではなく、データを「削除済み」としてマークすることによってソフト削除が実現されます。論理的に削除されたデータはデータベースにまだ存在しますが、「削除済み」としてマークされており、クエリ結果には表示されないため、論理的な削除機能によってデータベースの整合性は破壊されません。 Laravel のソフト削除には主に 2 つのステップが含まれます:

  1. モデルに SoftDeletes 機能を追加する

Laravel のソフト削除機能を使用するには、ソフトにするモデルに SoftDeletes を追加する必要があります。削除されました。機能。 Laravel のモデルは、機能を追加するためにトレイトを使用します。SoftDeletes トレイトは、Laravel によって提供されるトレイトです。

use IlluminateDatabaseEloquentModels;
use IlluminateDatabaseEloquentSoftDeletes;

class Example extends Model{
    use SoftDeletes;

    protected $dates = ['deleted_at'];

    //...
}

上記のコードでは、 use SoftDeletes ステートメントは、Laravel が提供する SoftDeletes 機能を使用することを示しています。同時に、$dates 属性を使用して、削除時刻の識別に使用される論理的な削除タイムスタンプ フィールドの名前を定義する必要もあります。デフォルトの論理的な削除のタイムスタンプ フィールドは「deleted_at」ですが、他の名前を使用することもできます。

  1. ソフト削除を実行するようにモデルに指示します

Laravel の SoftDeletes 機能は、削除を実行するときに実際にはデータを削除しない削除メソッドを提供しますが、データは「」とマークされます。削除されました。」例:

$example = Example::find(1);
$example->delete();

上記のコードは、ID 1 のデータを「削除済み」としてマークしますが、データベースからは削除しません。

論理的に削除されたデータをクエリするには、withTrashed メソッドを使用して論理的に削除されたデータを含むすべてのデータを取得するか、onlyTrashed メソッドを使用して削除されたデータのみを取得します。例:

// 查询包括软删除数据在内的所有数据
$examples = Example::withTrashed()->get();

// 查询删除的数据
$deletedExamples = Example::onlyTrashed()->get();

上記のコードは、論理的に削除されたデータと削除されたデータをそれぞれクエリするために使用できます。

Laravel の論理的に削除されたフィールドを別の名前に変更する

デフォルトでは、Laravel は「deleted_at」フィールドを使用して削除タイムスタンプ フィールドを識別します。これは、論理的に削除されたデータをクエリするときに非常に便利です。

ただし、場合によっては、開発者はタイムスタンプ フィールドの削除を示すために追加のプロパティを使用する必要がある場合があります。 Laravel で論理的に削除されたフィールドの名前を変更する必要がある場合は、モデルで deleteAt メソッドを定義できます。例:

use IlluminateDatabaseEloquentModel;
use IlluminateDatabaseEloquentSoftDeletes;

class Example extends Model{
    use SoftDeletes;

    protected $dates = ['my_deleted_at'];

    public function getDeletedAtColumn()
    {
        return 'my_deleted_at';
    }

    // ...
}

上記のコードでは、$dates 属性の "deleted_at" を "my_deleted_at" に変更し、getDeletedAtColumn メソッドを使用して Laravel の論理的に削除されたフィールドを "my_deleted_at" に変更します。

その後、次のコマンドを使用してソフト削除を実行できます:

$example = Example::find(1);
$example->delete();

Laravel は、デフォルトの delete_at フィールドの代わりに my_deleted_at フィールドを使用して、データを削除済みとしてマークします。クエリ時に、withTrashed メソッドとonlyTrashed メソッドを使用して、削除されたデータを取得できます。

概要

Laravel では、論理的な削除を使用すると、実際にデータを削除せずに、データを「削除済み」としてマークすることが簡単になります。 Laravel の SoftDeletes 機能を使用すると、論理的な削除を簡単に実行できます。デフォルトでは、Laravel は「deleted_at」フィールドを使用して削除タイムスタンプフィールドを識別しますが、開発者は getDeletedAtColumn メソッドを使用してフィールドを別の名前に変更できます。ソリューションに関係なく、ソフト削除はLaravelの非常に強力で実用的な機能です。

以上がlaravelの論理削除フィールドが他のフィールドに変更されましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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