Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pplrPmEqSR 173 of 252 menu
◀ ▶

Мягкое удаление в моделях Eloquent в Laravel

Кроме обычного удаления Eloquent также может мягко удалять записи. Мягкое удаление означает, что запись на самом деле остаётся в базе данных, но в таблице для записи устанавливается поле deleted_at.

Сначала добавим колонку миграцией:

<?php Schema::table('users', function (Blueprint $table) { $table->softDeletes(); }); ?>

Затем в модели подключим трейт SoftDeletes:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class User extends Model { use SoftDeletes; } ?>

Теперь обычный delete не удалит строку из таблицы, а только проставит deleted_at. Такие записи сами не попадут в выборку:

<?php $user = User::find(1); $user->delete(); ?>

Чтобы увидеть и мягко удалённые записи, используйте withTrashed:

<?php $users = User::withTrashed()->get(); ?>

Восстановить запись можно методом restore:

<?php $user = User::withTrashed()->find(1); $user->restore(); ?>

Окончательно удалить из базы - методом forceDelete:

<?php $user->forceDelete(); ?>

Реализуйте мягкое удаление юзеров: миграция, трейт в модели, удаление через delete.

Реализуйте восстановление удалённых юзеров через restore.

Выведите список всех юзеров, включая мягко удалённых.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить