В Laravel функция мягкого удаления меток времени — это мощный инструмент, который позволяет помечать записи как удаленные, не удаляя их навсегда из базы данных. Он использует временные метки для отслеживания момента удаления записи, обеспечивая удобный способ управления удаленными записями. В этой статье блога мы рассмотрим различные методы реализации и использования функции обратимого удаления временных меток в Laravel.
- Базовая настройка.
Чтобы включить мягкое удаление метки времени в Laravel, вам необходимо добавить чертуIlluminate\Database\Eloquent\SoftDeletesв вашу модель. Эта особенность добавляет необходимые поля и методы для управления обратимо удаленными записями.
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class YourModel extends Model
{
use SoftDeletes;
// ...
}
- Удаление записей.
Чтобы мягко удалить запись, просто вызовите методdeleteв экземпляре модели. Этот метод обновит столбецdeleted_atтекущей меткой времени.
$record = YourModel::find($id);
$record->delete();
- Восстановление записей.
Если вы хотите восстановить обратимо удаленную запись, вы можете использовать методrestore.
$record = YourModel::withTrashed()->find($id);
$record->restore();
- Запрос обратимо удаленных записей.
По умолчанию построитель запросов Laravel исключает обратимо удаленные записи из набора результатов. Однако в некоторых случаях вам может потребоваться включить в запросы обратимо удаленные записи. Для этого вы можете использовать методwithTrashed.
$records = YourModel::withTrashed()->get();
- Запрос только обратимо удаленных записей.
Если вы хотите получить только обратимо удаленные записи, вы можете использовать методonlyTrashed.
$records = YourModel::onlyTrashed()->get();
- Безвозвратное удаление записей.
Чтобы безвозвратно удалить обратимо удаленные записи из базы данных, вы можете использовать методforceDelete.
$record = YourModel::withTrashed()->find($id);
$record->forceDelete();
- События.
Laravel предоставляет события, которые инициируются во время процесса обратимого удаления. Событияdeletingиdeletedпозволяют выполнять дополнительные действия до и после обратимого удаления записи.
class YourModel extends Model
{
use SoftDeletes;
protected static function boot()
{
parent::boot();
static::deleting(function ($model) {
// Perform actions before soft delete
});
static::deleted(function ($model) {
// Perform actions after soft delete
});
}
}
В этой статье мы рассмотрели различные методы использования функции мягкого удаления меток времени в Laravel. Добавив признак SoftDeletesв свою модель, вы сможете легко управлять обратимо удаленными записями, восстанавливать их при необходимости и даже безвозвратно удалять. Понимание и эффективное использование этих методов улучшит ваш опыт разработки на Laravel и упростит управление удаленными записями.