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

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

Раздел 1. Настройка обратимого удаления
Чтобы начать использовать обратимое удаление в Laravel, выполните следующие действия:

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

    // Rest of your model code...
}

Раздел 2. Выполнение обратимого удаления

Метод 1: удаление одной записи
Чтобы мягко удалить одну запись, используйте метод delete()в экземпляре модели Eloquent.

$record = YourModel::find($id);
$record->delete();

Метод 2: удаление нескольких записей
Чтобы мягко удалить несколько записей, используйте метод destroy(), передав массив или список первичных ключей.

YourModel::destroy([$id1, $id2, $id3]);

Раздел 3. Восстановление обратимо удаленных записей

Метод 1: восстановление одной записи
Чтобы восстановить одну обратимо удаленную запись, используйте метод restore()в экземпляре модели Eloquent.

$record = YourModel::withTrashed()->find($id);
$record->restore();

Метод 2: восстановление нескольких записей
Чтобы восстановить несколько обратимо удаленных записей, используйте метод whereIn()в сочетании с методом restore().

YourModel::withTrashed()->whereIn('id', [$id1, $id2])->restore();

Раздел 4. Запрос обратимо удаленных записей

Метод 1: получение только обратимо удаленных записей
Чтобы получить только обратимо удаленные записи, используйте метод withTrashed()в экземпляре построителя запросов.

$deletedRecords = YourModel::withTrashed()->get();

Метод 2. Получение неудаленных записей
Чтобы получить только неудаленные записи, используйте метод withoutTrashed().

$activeRecords = YourModel::withoutTrashed()->get();

Метод 3: получение всех записей (включая обратимо удаленные)
Чтобы получить все записи, включая обратимо удаленные, используйте метод withTrashed()без каких-либо условий.

$allRecords = YourModel::withTrashed()->get();

Мягкое удаление в Laravel предлагает мощный механизм управления данными, позволяющий легко восстанавливать удаленные записи. Реализовав методы, описанные в этой статье, вы сможете уверенно выполнять обратимое удаление в своих приложениях Laravel.