26 Eliminación Suave de Usuarios (Soft Deletes) en Laravel 12 - Sistema de Préstamos Laravel 12 🗑️

Duración: 8 min
Módulo: Módulo Usuarios Lección 7 de 8

Descripción

🗑️ Lección 26: Eliminación Suave de Usuarios (Soft Deletes) en Laravel 12

En esta sesión de Benji V2, aprenderás a implementar la eliminación suave para el módulo de usuarios. A diferencia de un borrado permanente, esta técnica protege la integridad histórica del sistema de préstamos, permitiendo dar de baja a usuarios sin perder sus registros en la base de datos.

🧠 Lógica de Soft Deletes vs. Hard Deletes

Entendemos la importancia de no borrar información sensible:

  • 🚫 Borrado Permanente (Hard Delete): Como vimos en el módulo de roles, este elimina el registro físico de la base de datos. Si se usara en usuarios, se perdería el historial de quién cobró o quién autorizó un préstamo [01:23].
  • 🛡️ Borrado Suave (Soft Delete): Laravel utiliza la columna deleted_at. Cuando "eliminamos" un usuario, el sistema simplemente anota la fecha y hora del borrado, ocultándolo de las consultas normales pero manteniéndolo en la base de datos para auditorías [01:17].

🛠️ Implementación Técnica en el Modelo y Controlador

Configuramos el sistema para que reconozca esta funcionalidad:

  • 🏗️ Trait SoftDeletes: Es fundamental incorporar use SoftDeletes; dentro del modelo User. Sin esto, Laravel ignorará la columna y borrará al usuario por completo [05:31].
  • 🔄 Cambio de Estado Automático: Antes de ejecutar el borrado, actualizamos el campo estado a "Inactivo". Esto permite que, visualmente, el usuario aparezca como deshabilitado antes de ser removido de las listas activas [04:12].
  • 💾 Persistencia Dual: Primero se guarda el cambio de estado ($user->save()) y luego se ejecuta el método $user->delete(), que es el que marca la fecha de baja en la tabla [04:22].

📊 Comportamiento en la Base de Datos

Observamos los resultados reales tras la eliminación:

  • 🕵️ Verificación en SQL: Al revisar la tabla, el registro sigue existiendo, pero ahora tiene su estado como inactivo y una marca de tiempo en deleted_at [06:19].
  • 📉 Listado Dinámico: El listado principal de usuarios se actualiza automáticamente para mostrar solo aquellos que no han sido eliminados suavemente, manteniendo la interfaz limpia y operativa [07:07].

Resultado de la Lección

Al finalizar, habrás desarrollado un sistema de baja de usuarios seguro. Tu aplicación ahora es capaz de "eliminar" perfiles de la vista del administrador mientras conserva la información necesaria para el correcto funcionamiento de los reportes y el historial de transacciones del sistema de préstamos.