В Laravel обратимое удаление предоставляет удобный способ «удаления» записей из базы данных, сохраняя при этом возможность восстановить их позже. Эта функция особенно полезна при работе с данными, которые должны быть удалены временно, но не окончательно. В этой статье мы рассмотрим различные методы и приемы использования обратимого удаления в Laravel.
Раздел 1. Настройка обратимого удаления
Чтобы начать использовать обратимое удаление в Laravel, выполните следующие действия:
- Добавьте столбец
deleted_atв таблицу, для которой вы хотите включить обратимое удаление. В этом столбце будет храниться временная метка удаления. - Внутри соответствующей модели 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.