34 Método Destroy con tablas relacionadas en LARAVEL(PHP-MySql) FullStack

Duración: 8 min
Módulo: 👩‍💼 Módulo de Secretarias Lección 9 de 9

Descripción

💥 Lección 34: Método Destroy con Tablas Relacionadas (Eliminación)

Título del Video: 34 Método Destroy con tablas relacionadas en LARAVEL (PHP-MySql) FullStack

Esta lección es la última del módulo de Secretarias y aborda la implementación de la acción destroy para eliminar un registro. El punto clave es la necesidad de eliminar manualmente el registro del usuario asociado para evitar que queden cuentas huérfanas en el sistema.

1. 🛣️ Configuración de la Ruta Destroy

Se habilita la ruta que ejecutará la eliminación definitiva del registro:

  • Método: Se utiliza el método Route::delete() [00:48].
  • Ruta: /admin/secretarias/{id}.
  • Función Asociada: La ruta se mapea a la función destroy del SecretariaController [00:55].
  • Formulario: En la vista de confirmación (delete.blade.php), el formulario debe enviar la petición a esta ruta utilizando el método @method('delete') [00:22].

2. 💻 Lógica de la Función destroy($id)

La función en el controlador debe realizar una doble eliminación para asegurar que ambos registros relacionados desaparezcan del sistema [02:01].

Paso 1: Buscar la Secretaria y su Relación

  1. Se recibe el $id de la secretaria a eliminar.
  2. Se busca el registro completo de la secretaria ($secretaria) en la tabla secretarias [01:41].

Paso 2: Eliminar el Usuario Asociado

  1. Se accede al usuario relacionado a través de la llave foránea: $user = $secretaria->user [02:14].
  2. Se ejecuta la eliminación del registro de la tabla users utilizando el método $user->delete() [02:37].

Paso 3: Eliminar la Secretaria

  1. Una vez eliminado el usuario, se elimina el registro de la tabla secretarias utilizando el método $secretaria->delete() [02:49].

💡 Nota Importante: Aunque la migración tiene la regla onDelete('cascade'), se opta por esta eliminación programática para garantizar el orden. Si se borrara primero la secretaria, el usuario (la cuenta de acceso) seguiría existiendo [02:48]. Al borrar primero el usuario, la regla onDelete('cascade') borraría automáticamente la secretaria, pero realizar la eliminación explícita de la secretaria después de la eliminación del usuario es una práctica segura.

Redirección Final

Finalmente, se redirige al usuario a la vista principal (admin.secretarias.index) con un mensaje de éxito: "Se eliminó a la secretaria de la manera correcta" [03:07].

📊 Conclusión del Módulo y Siguiente Paso

Con la implementación de la acción destroy, se completa el módulo de Secretarias (CRUD: Create, Read, Update, Delete) [04:15].

Adicionalmente, se actualiza el panel principal de la administración (admin.index) para mostrar el conteo total de secretarias registradas, utilizando el método count() en el modelo Secretaria [05:06].

El siguiente módulo del curso se centrará en la creación del módulo de Pacientes [07:34].