В Laravel 8 функция обратимого удаления предоставляет удобный способ «удаления» записей из вашей базы данных, сохраняя при этом возможность восстановить их позже, если это необходимо. Эта функция особенно полезна при работе с данными, которые не следует удалять из приложения без возможности восстановления. В этой статье мы рассмотрим концепцию обратимого удаления и обсудим различные методы ее реализации в Laravel 8, используя разговорный язык и примеры кода.
Метод 1: использование признака softDeletes
Признак softDeletes— это встроенная функция в Laravel 8, которая обеспечивает функцию обратимого удаления для ваших моделей Eloquent. Чтобы использовать его, выполните следующие действия:
Шаг 1. Добавьте в таблицу столбец deleted_at:
Schema::table('your_table', function (Blueprint $table) {
$table->softDeletes();
});
Шаг 2. Добавьте признак SoftDeletesв вашу модель:
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class YourModel extends Model
{
use SoftDeletes;
}
Теперь, когда вы вызываете метод delete()для экземпляра модели, Laravel обновит столбец deleted_atтекущей меткой времени вместо физического удаления записи.п>
Метод 2: восстановление обратимо удаленных записей
Чтобы восстановить обратимо удаленные записи, вы можете использовать метод restore(), предоставляемый признаком SoftDeletes. Вот пример:
$record = YourModel::withTrashed()->find($id);
$record->restore();
Метод 3: запрос обратимо удаленных записей
Laravel предлагает несколько методов запроса обратимо удаленных записей:
-
Чтобы получить только обратимо удаленные записи:
$records = YourModel::onlyTrashed()->get(); -
Чтобы включить как обратимо удаленные, так и неудаленные записи:
$records = YourModel::withTrashed()->get();
Метод 4: безвозвратное удаление обратимо удаленных записей
Если вам больше не нужно хранить обратимо удаленные записи и вы хотите удалить их навсегда, вы можете использовать метод forceDelete():
$record = YourModel::withTrashed()->find($id);
$record->forceDelete();
Метод 5: настройка столбца обратимого удаления
По умолчанию Laravel использует столбец deleted_atдля операций обратимого удаления. Однако вы можете настроить имя столбца, переопределив свойство $deletedAtв вашей модели:
protected $deletedAt = 'custom_column_name';
Мягкое удаление — это мощная функция Laravel 8, которая позволяет безопасно удалять записи, не удаляя их навсегда из базы данных. Используя признак softDeletesи предоставленные методы, вы можете легко реализовать функцию обратимого удаления и управлять ею в своих приложениях Laravel. Понимание и использование обратимого удаления может значительно расширить возможности вашего приложения по управлению данными.