📅  最后修改于: 2023-12-03 15:32:36.619000             🧑  作者: Mango
当一个记录被删除时,Soft Deletes 允许你保留这条记录的信息而不是从数据库中永久删除它。Laravel 的 Soft Deletes 功能使得可以轻松地在应用程序中实现这一点。
在Laravel中,首先需要创建一个新的迁移来添加软删除所需的必要列。运行以下 Artisan 命令将创建一个新迁移文件:
php artisan make:migration add_deleted_at_column_to_table_name --table=table_name
其中,table_name
是你需要添加soft deleted 的表的名称。 运行完以上命令,会在database/migrations
目录下生成一个新的迁移文件。
在 up()
方法中添加一个 deleted_at
列:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddDeletedAtColumnToTableName extends Migration
{
public function up()
{
Schema::table('table_name', function (Blueprint $table) {
$table->softDeletes();
});
}
public function down()
{
Schema::table('table_name', function (Blueprint $table) {
$table->dropSoftDeletes();
});
}
}
运行 php artisan migrate
命令,使迁移生效。
只需将 Illuminate\Database\Eloquent\SoftDeletes
trait 添加到要使用 Soft Deletes 的模型中,并指定 deleted_at
字段:
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class User extends Model
{
use SoftDeletes;
protected $dates = ['deleted_at'];
}
现在,可以在 Larave 中软删除任何使用 SoftDeletes
trait 的数据库表中的记录:
$user = User::find(1);
$user->delete();
软删除后,被删除的记录将在数据库中继续存在,但不会在后续查询结果中出现。
若需要恢复已被软删除的记录,只需要调用 restore()
方法:
$user = User::withTrashed()
->where('id', 1)
->restore();
在 Laravel 中, 迁移软删除是一项至关重要的任务,因为它允许我们实现更高级的数据库管理功能,例如保留所有删除数据的记录,而不是完全删除它们。