Освоение мягкого удаления в Laravel Eloquent: подробное руководство

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

  1. Включение обратимого удаления.
    Чтобы начать использовать обратимое удаление, вам необходимо добавить признак Illuminate\Database\Eloquent\SoftDeletesв класс модели. Эта особенность предоставляет необходимые методы и функции для обработки обратимого удаления.
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class YourModel extends Model
{
    use SoftDeletes;

    // Rest of your model code...
}
  1. Мягкое удаление записей.
    После добавления признака SoftDeletesвы можете мягко удалить запись, вызвав метод deleteв экземпляре вашей модели. Этот метод установит в столбце deleted_atтекущую метку времени.
$record = YourModel::find($id);
$record->delete();
  1. Запрос обратимо удаленных записей.
    По умолчанию Laravel Eloquent исключает обратимо удаленные записи из запросов. Однако вы можете включить их с помощью метода withTrashed. Этот метод извлекает как неудаленные, так и обратимо удаленные записи.
$records = YourModel::withTrashed()->get();
  1. Восстановление обратимо удаленных записей.
    Чтобы восстановить обратимо удаленную запись, вы можете использовать метод restore. Для столбца deleted_atустанавливается значение null.
$record = YourModel::withTrashed()->find($id);
$record->restore();
  1. Безвозвратное удаление записей.
    Если вы хотите навсегда удалить обратимо удаленную запись из базы данных, вы можете использовать метод forceDelete.
$record = YourModel::withTrashed()->find($id);
$record->forceDelete();
  1. Запрос только обратимо удаленных записей.
    Если вам нужно получить только обратимо удаленные записи, вы можете использовать метод onlyTrashed. Он исключает из запроса неудаленные записи.
$records = YourModel::onlyTrashed()->get();

Мягкое удаление в Laravel Eloquent предоставляет мощный способ управления удаленными записями в вашем приложении. Используя методы, описанные в этой статье, вы можете легко удалять, восстанавливать и безвозвратно удалять записи, сохраняя при этом целостность данных. Понимание и эффективное использование обратимого удаления повысит удобство сопровождения и аудита вашего приложения Laravel.