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

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

Метод 1: использование признака SoftDeletes

Laravel предоставляет встроенную особенность под названием SoftDeletes, которую вы можете добавить в свои модели Eloquent, чтобы включить мягкое удаление. Давайте рассмотрим простой пример:

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model
{
    use SoftDeletes;

    protected $dates = ['deleted_at'];
}

Добавив признак SoftDeletesи столбец deleted_atв массив $dates, Laravel автоматически выполнит процесс мягкого удаления для Postмодель. Теперь вы можете удалять записи с помощью метода delete(), и они будут помечены как удаленные, а не удалены навсегда.

Метод 2: восстановление обратимо удаленных записей

Laravel предоставляет удобный метод под названием restore()для восстановления обратимо удаленных записей. Вот пример:

$post = Post::withTrashed()->find($id);
$post->restore();

Метод withTrashed()позволяет получать как удаленные, так и неудаленные записи. Затем вы можете вызвать метод restore()для полученной модели, чтобы восстановить ее.

Метод 3: запрос обратимо удаленных записей

Чтобы запросить обратимо удаленные записи, вы можете использовать метод withTrashed()или метод onlyTrashed(). Первый включает как удаленные, так и неудаленные записи, а второй извлекает только удаленные записи. Вот пример:

$posts = Post::withTrashed()->get(); // Retrieves all records (deleted and non-deleted)
$deletedPosts = Post::onlyTrashed()->get(); // Retrieves only the deleted records

Метод 4: безвозвратное удаление обратимо удаленных записей

Если вы хотите навсегда удалить обратимо удаленные записи из базы данных, вы можете использовать метод forceDelete(). Вот как это можно сделать:

$post = Post::withTrashed()->find($id);
$post->forceDelete();

Метод forceDelete()безвозвратно удалит запись, полностью удалив ее из базы данных.

Мягкое удаление — ценная функция Laravel 8, позволяющая помечать записи как удаленные, не удаляя их фактически из базы данных. В этой статье мы рассмотрели несколько методов реализации обратимого удаления в Laravel 8, включая использование признака SoftDeletes, восстановление обратимо удаленных записей, запрос обратимо удаленных записей и безвозвратное удаление обратимо удаленных записей. Используя эти методы, вы можете эффективно управлять удаленными записями в своих приложениях Laravel, обеспечивая надежный и удобный интерфейс.