В 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
, вы можете легко включить мягкое удаление и восстановить функциональность в вашем приложении. Эта функция обеспечивает гибкий и эффективный способ выполнения требований обратимого удаления при сохранении целостности данных.