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

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

Что такое обратимое удаление?
Мягкое удаление представляет собой альтернативу жесткому удалению, позволяя помечать записи как «удаленные», а не удалять их из базы данных. Это особенно полезно, если вы хотите сохранить данные для целей аудита или возможного восстановления. При мягком удалении в Laravel в таблицу базы данных добавляется столбец deleted_at, который имеет значение NULL для активных записей и содержит метку времени, когда запись мягко удаляется.

Включение мягкого удаления.
Чтобы включить мягкое удаление в Laravel Eloquent, вам необходимо добавить признак Illuminate\Database\Eloquent\SoftDeletesв класс модели. Например:

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class YourModel extends Model
{
    use SoftDeletes;
    protected $dates = ['deleted_at'];
}

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

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

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

YourModel::withTrashed()
    ->whereIn('id', $ids)
    ->restore();

Метод 3. Восстановление всех обратимо удаленных записей в модели.
Чтобы восстановить все обратимо удаленные записи в модели, вы можете использовать метод restoreбез каких-либо условий:

YourModel::withTrashed()->restore();

Метод 4. Восстановление обратимо удаленных записей с помощью построителя запросов:
Помимо использования методов модели Eloquent, вы также можете восстановить обратимо удаленные записи с помощью построителя запросов:

DB::table('your_table')
    ->where('deleted_at', '!=', null)
    ->update(['deleted_at' => null]);

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