Реализация функциональности мягкого удаления в данных модели Laravel

В Laravel функция мягкого удаления позволяет помечать записи как «удаленные», не удаляя их фактически из базы данных. Эта функция полезна в сценариях, в которых вы хотите сохранить данные для целей аудита или для возможного восстановления в будущем. В этой статье блога мы рассмотрим различные методы добавления функции обратимого удаления в ваши модели Laravel с помощью Eloquent ORM.

Метод 1: использование свойства SoftDeletes
Laravel предоставляет встроенный признак SoftDeletes, который вы можете использовать для включения функции обратимого удаления в ваших моделях. Чтобы начать, откройте файл модели и добавьте вверху следующий код:

use Illuminate\Database\Eloquent\SoftDeletes;
class ModelData extends Model
{
    use SoftDeletes;
}

Добавив эту особенность, Laravel автоматически выполнит процесс мягкого удаления вашей модели. Он добавит столбец «deleted_at» в вашу таблицу, и когда вы вызываете метод delete()для экземпляра модели, он установит текущую временную метку в столбце «deleted_at» вместо окончательного удаления запись.

Метод 2: настройка столбца обратимого удаления
Если вы хотите использовать другое имя столбца для функции обратимого удаления, вы можете переопределить имя столбца по умолчанию, указав constв вашей модели:

use Illuminate\Database\Eloquent\SoftDeletes;
class ModelData extends Model
{
    use SoftDeletes;
    const DELETED_AT = 'deleted_date';
}

В этом примере столбец обратимого удаления будет называться «deleted_date» вместо значения по умолчанию «deleted_at».

Метод 3: восстановление обратимо удаленных записей
Laravel также предоставляет удобный метод восстановления обратимо удаленных записей. Вы можете использовать метод restore()на экземпляре модели, чтобы отменить мягкое удаление:

$model = ModelData::withTrashed()->find($id);
$model->restore();

Метод withTrashed()позволяет получать как удаленные, так и неудаленные записи, а find($id)извлекает обратимо удаленную запись с указанным идентификатором.

Добавление функции обратимого удаления к данным модели Laravel — простой процесс. Используя черту SoftDeletes, вы можете легко включить мягкое удаление и восстановить функциональность в вашем приложении. Эта функция обеспечивает гибкий и эффективный способ выполнения требований обратимого удаления при сохранении целостности данных.