「Laravel5.4」では、ソフト削除とは、テーブルレコードのステータスを削除済みとしてマークすることを指し、実際にはデータベースから削除されないため、クエリ時にフィルタリングを追加できます。テーブル内では「deleted_at」フィールド値で識別され、デフォルト値は null です。
この記事の動作環境: Windows 10 システム、Laravel バージョン 5.4、Dell G3 コンピューター。
ソフトデリートとは実際にデータベースから削除するのではなく、テーブル内のフィールドdeleted_at(このフィールドの名前も固定です)の値の識別、テーブルの設計時にこのフィールド delete_at を追加する必要があります。デフォルト値は null です。
いわゆる論理的な削除とは、データ テーブルのレコードが実際にはデータベースから削除されないことを意味しますが、テーブルのレコードは識別ステータスは論理的に削除されたものとしてマークされるため、クエリ中にフィルタリングして、対応するテーブル レコードが「削除」されたように見せることができます。 Laravel は識別ステータスとして日付フィールドを使用します。この日付フィールドはカスタマイズできます。ここでは、deleted_at を使用します。対応するモデルが論理的に削除されている場合、deleted_at フィールドの値は削除時刻です。それ以外の場合、値は空です。
ソフト削除は論理的な削除です。データ保持シートには削除ステータスがマークされます。一般的には、マークのステータスが利用可能であり、削除時刻も利用できるように、削除時刻をマークとして使用します。
タイプは timestamp('deleted_at')です
モデルに SoftDelete の使用を追加します
use Illuminate\Database\Eloquent\SoftDeletes; class TestModel extends Model { use SoftDeletes; protected $dates = ['deleted_at']; }
例は次のとおりです:
Use Laravel 独自の Eloquent ORM を使用してソフト削除を実装します。
まず、データ移行ファイルに削除時刻フィールドを追加します
./database/migrations/2014_10_12_000000_create_users_table.php
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); $table->softDeletes()->comment('删除时间');// 默认添加 deleted_at 字段 }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } };
[関連する推奨事項: laravel ビデオ チュートリアル]
以上がlaravel5.4のソフトデリートとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。