Мягкое удаление Laravel: методы и примеры кода для реализации мягкого удаления в Laravel

Под «мягким удалением Laravel» понимается функция PHP-фреймворка Laravel, которая позволяет удалять записи из таблицы базы данных, сохраняя их в базе данных, помеченные как «мягко удаленные», а не удаленные навсегда. Эта функция полезна, если вы хотите вести учет удаленных элементов для целей аудита или возможного восстановления.

В Laravel обратимое удаление реализовано с помощью Eloquent ORM (объектно-реляционное сопоставление). Вот несколько методов и примеров, связанных с функцией обратимого удаления в Laravel:

  1. Определение мягкого удаления в модели:
    Чтобы включить мягкое удаление для конкретной модели, вам необходимо использовать признак SoftDeletesи добавить deleted_atстолбец в вашу таблицу. Вот пример:
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class YourModel extends Model
{
    use SoftDeletes;
    protected $dates = ['deleted_at'];
}
  1. Мягкое удаление записи.
    Чтобы мягко удалить запись, вы можете вызвать метод deleteдля экземпляра вашей модели. Вот пример:
$record = YourModel::find($id);
$record->delete();
  1. Восстановление обратимо удаленной записи.
    Вы можете восстановить обратимо удаленную запись, используя метод restore. Вот пример:
$record = YourModel::withTrashed()->find($id);
$record->restore();
  1. Проверка того, была ли запись удалена обратимо:
    Вы можете проверить, была ли запись удалена обратимо, с помощью метода trashed. Он возвращает true, если запись обратимо удалена; в противном случае возвращается false. Вот пример:
$record = YourModel::find($id);
if ($record->trashed()) {
    // The record is soft deleted
} else {
    // The record is not soft deleted
}
  1. Извлечение обратимо удаленных записей.
    Чтобы получить обратимо удаленные записи, вы можете использовать метод withTrashed. В результат включены как обратимо удаленные, так и неудаленные записи. Вот пример:
$records = YourModel::withTrashed()->get();
  1. Безвозвратное удаление обратимо удаленной записи.
    Чтобы окончательно удалить обратимо удаленную запись из базы данных, вы можете использовать метод forceDelete. Вот пример:
$record = YourModel::withTrashed()->find($id);
$record->forceDelete();