В Laravel мягкое удаление предоставляет удобный способ пометить записи как «удаленные», не удаляя их фактически из базы данных. Эта функция особенно полезна, если вы хотите сохранить данные для целей аудита или восстановления, сохраняя при этом целостность данных. В этой статье мы рассмотрим мягкое удаление в Laravel и обсудим различные методы его реализации в вашем приложении.
Что такое обратимое удаление?
Мягкое удаление позволяет логически удалять записи путем добавления столбца «deleted_at» в таблицу. При обратимом удалении записи столбцу «deleted_at» присваивается значение, отличное от нуля, что указывает на то, что запись считается удаленной. Однако запись физически не удаляется из базы данных.
Включение мягкого удаления в Laravel.
Чтобы включить обратимое удаление для конкретной модели в Laravel, вам необходимо использовать признак SoftDeletes
, предоставляемый платформой. Начнем с добавления признака в нашу модель:
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class YourModel extends Model
{
use SoftDeletes;
// ...
}
Как только вы добавите признак SoftDeletes
в свою модель, Laravel автоматически выполнит за вас операции обратимого удаления.
Мягкое удаление записей.
Чтобы мягко удалить запись, вы можете просто вызвать метод delete
в экземпляре модели:
$record = YourModel::find($id);
$record->delete();
В результате в столбце «deleted_at» будет установлена текущая временная метка, что фактически пометит запись как удаленную.
Восстановление обратимо удаленных записей.
Восстановить обратимо удаленную запись очень просто. Вы можете использовать метод restore
для модели:
$record = YourModel::withTrashed()->find($id);
$record->restore();
Метод withTrashed
позволяет получать как удаленные, так и неудаленные записи.
Безвозвратное удаление обратимо удаленных записей:
Если вы хотите навсегда удалить обратимо удаленную запись из базы данных, вы можете использовать метод forceDelete
:
$record = YourModel::withTrashed()->find($id);
$record->forceDelete();
Это приведет к удалению записи из базы данных, включая столбец «deleted_at».
Запрос обратимо удаленных записей.
Laravel предоставляет несколько методов для запроса обратимо удаленных записей:
-
Получить только обратимо удаленные записи:
$records = YourModel::onlyTrashed()->get();
-
Получить как обратимо удаленные, так и неудаленные записи:
$records = YourModel::withTrashed()->get();
-
Исключить обратимо удаленные записи из результатов:
$records = YourModel::whereNull('deleted_at')->get();
Мягкое удаление в Laravel предлагает удобный способ управления удаленными записями, сохраняя при этом целостность данных. Используя признак SoftDeletes
и предоставленные методы, вы можете легко реализовать обратимое удаление в своем приложении Laravel. Если вам нужно мягко удалить, восстановить или окончательно удалить записи, Laravel предоставляет интуитивно понятные методы для беспрепятственного выполнения этих операций.