36 Eliminar y Restaurar Clientes en Laravel 12: Soft Deletes y Recuperación de Registros 🗑️♻️

Duración: 23 min
Módulo: Módulo clientes Lección 9 de 9

Descripción

🗑️ Lección 36: Eliminar y Restaurar Clientes en Laravel 12: Soft Deletes

En esta sesión final del módulo de clientes de Benji V2, implementamos un sistema de "borrado lógico" o Soft Deletes. Esta técnica es fundamental en sistemas financieros, ya que permite "eliminar" registros de la vista del usuario sin borrarlos físicamente de la base de datos, manteniendo la integridad histórica de los préstamos y pagos.

🧠 La Lógica del Soft Delete Relacional

Entendemos por qué no debemos borrar datos permanentemente:

  • 🛡️ Integridad Referencial: Si un cliente tiene préstamos asociados, borrarlo físicamente causaría errores en el sistema. Con Soft Deletes, el registro permanece en la base de datos pero se marca como "eliminado" mediante el campo deleted_at [10:29].
  • 🔗 Eliminación en Cascada Lógica: Configuramos el sistema para que, al eliminar un cliente, su cuenta de usuario vinculada también se marque como eliminada y su estado cambie automáticamente a "Inactivo" [05:13].

🏗️ Configuración Técnica del Modelo

Preparamos el backend para soportar la recuperación de datos:

  • 🛠️ Migraciones y Traits: Añadimos el campo $table->softDeletes() en la migración de clientes e incorporamos el trait use SoftDeletes en el modelo Cliente [07:51].
  • 📡 Consultas Avanzadas: Utilizamos el método withTrashed() en los controladores para poder listar tanto a los clientes activos como a los "eliminados", permitiendo así su gestión posterior [11:50].

♻️ Sistema de Restauración (Método Restore)

Implementamos la capacidad de "deshacer" una eliminación:

  • 🔄 Recuperación Bidireccional: Desarrollamos la lógica para que, al restaurar un cliente, el sistema reactive automáticamente su cuenta de usuario y cambie su estado de "Inactivo" a "Activo" de nuevo [17:37].
  • ⚙️ Sincronización de Módulos: Aseguramos que si restauras a un usuario desde el módulo de Usuarios, el perfil del Cliente correspondiente también se restaure, y viceversa, manteniendo ambos módulos siempre sincronizados [22:07].

🎨 Interfaz de Usuario para Gestión de Bajas

Refinamos la tabla de clientes con acciones dinámicas:

  • 🔘 Botones Condicionales: La tabla detecta si un registro está eliminado. Si lo está, oculta los botones de editar/ver y muestra un botón de "Restaurar" con un icono de reciclaje [16:32].
  • 🚦 Feedback Visual: Los clientes eliminados se muestran con su estado en rojo ("Inactivo"), indicando claramente que no tienen acceso actual al sistema [18:43].

Resultado del Módulo

¡Felicidades! Has completado el CRUD profesional de Clientes. Tu sistema ahora cuenta con:

  1. Listado avanzado con paginación y buscador.
  2. Registro y Edición con gestión inteligente de imágenes y validaciones.
  3. Eliminación Segura que protege la información histórica mediante Soft Deletes.