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