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

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

  1. Использование признака SoftDeletes:
    Laravel предоставляет признак SoftDeletes, который вы можете добавить в свой класс модели. Эта черта добавляет необходимые столбцы и методы для включения мягкого удаления.
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class YourModel extends Model
{
    use SoftDeletes;
}
  1. Настройка столбца deleted_atвручную:
    Если вы не хотите использовать признак SoftDeletes, вы можете вручную установить deleted_at>столбец, чтобы пометить запись как удаленную.
// Soft delete a record
$record = YourModel::find($id);
$record->deleted_at = now();
$record->save();
// Restore a soft-deleted record
$record = YourModel::withTrashed()->find($id);
$record->deleted_at = null;
$record->save();
// Permanently delete a record
$record = YourModel::withTrashed()->find($id);
$record->forceDelete();
  1. Запрос обратимо удаленных записей.
    Вы можете получить обратимо удаленные записи вместе с неудаленными записями, используя метод withTrashed.
// Retrieve all records (including soft-deleted)
$records = YourModel::withTrashed()->get();
// Retrieve only soft-deleted records
$records = YourModel::onlyTrashed()->get();
  1. Восстановление обратимо удаленных записей.
    Вы можете восстановить обратимо удаленные записи с помощью метода restore.
$record = YourModel::onlyTrashed()->find($id);
$record->restore();