Contenido del curso
Diseño de un foro
- 5

Flujo completo de Laravel: ruta, controlador, modelo y vista
07:55 min - 6

Diseño home en Laravel con Tailwind CSS
09:48 min - 7

Desarrollo de página de detalles con rutas dinámicas en Laravel
07:43 min - 8

Creación de componentes Blade para plantillas reutilizables en Laravel
07:11 min - 9

Pregunta con respuestas dinámicas en Laravel
05:19 min - 10

Relaciones polimorfas para comentarios en Laravel
06:33 min
Livewire
Optimización
CRUD
Detalles finales
Eliminar preguntas y datos huérfanos en Laravel
Resumen
Eliminar preguntas en Laravel requiere algo más que un botón: necesitas una ruta, un método en el controlador y entender cómo el framework interpreta el verbo HTTP DELETE dentro de un formulario POST. Aquí construimos esa funcionalidad paso a paso para que tu foro permita borrar contenido sin romper la lógica de la base de datos.
¿Cómo se define la ruta para eliminar una pregunta?
La eliminación arranca desde la vista show, donde el formulario de borrar convive con el de editar. El botón ya existe, pero al presionarlo lanza un error porque la ruta aún no está registrada. Para resolverlo, vas al archivo routes/web.php y declaras una nueva ruta dentro de la sección de preguntas [01:00].
El detalle interesante está en el verbo HTTP. A nivel web, los navegadores solo soportan de forma nativa los métodos GET y POST, pero Laravel permite simular otros como DELETE o PUT mediante un campo oculto en el formulario. Tu formulario envía con method="POST", pero internamente Laravel lee la directiva @method('DELETE') y enruta la petición al controlador correcto.
¿Por qué uso POST en el formulario si la ruta es DELETE? Porque HTML solo soporta GET y POST de forma nativa. Laravel usa un campo oculto
_methodpara indicarle al backend que la intención real es DELETE.
¿Qué hace el método destroy en el controlador?
Dentro del controlador ubicado en App\Http\Controllers, agregas el método que se encarga de borrar el registro. Al escribirlo, el editor autocompleta una verificación de autorización, una capa de seguridad que se desarrolla más adelante para garantizar que cada usuario solo elimine sus propias preguntas [01:45].
Por ahora, la lógica se mantiene simple:
- Recibir la pregunta a eliminar.
- Ejecutar el borrado contra la base de datos.
- Redirigir al usuario hacia la ruta
homecon un mensaje de confirmación.
Al probar el flujo en el navegador, eliges una pregunta, presionas eliminar y el sistema te devuelve al inicio. Si revisas la tabla de preguntas en la base de datos, el conteo baja: pasas de 28 a 27 registros [02:30]. La operación funciona.
¿Qué son los datos huérfanos y por qué aparecen?
Aquí surge un problema silencioso. La tabla de preguntas se limpia, pero las relaciones asociadas no. Al revisar la tabla de corazones (los likes del foro), encuentras 13 asignaciones. Le das corazón a una pregunta nueva, el contador sube a 14, y luego eliminas esa misma pregunta [03:15].
Resultado: la pregunta desaparece, pero el registro del corazón sigue ahí, apuntando a una pregunta que ya no existe. Esos registros sin referencia válida son lo que se conoce como datos huérfanos, y ensucian la integridad de tu base de datos con el tiempo.
¿Qué son los datos huérfanos en una base de datos? Son registros en tablas relacionadas que apuntan a un padre que ya fue eliminado. Por ejemplo, un like asociado a una pregunta borrada. Generan inconsistencia y ocupan espacio innecesario.
¿Cómo pruebas que la eliminación funciona correctamente?
Valida el flujo en dos niveles. Primero, el visual: presionas eliminar, el sistema redirige al home y la pregunta deja de aparecer en el listado. Segundo, el técnico: abres la base de datos y confirmas que el conteo de filas disminuyó.
Este doble chequeo te da certeza de que la operación se ejecutó. Sin embargo, también revela el siguiente reto: las tablas relacionadas necesitan limpieza automática cuando borras un padre. Esa lógica, basada en relaciones de Eloquent y eventos de modelo, se resuelve en la siguiente entrega.
Mientras tanto, implementa esta funcionalidad en tu foro. Tu sistema debe poder eliminar preguntas usando el método DELETE simulado desde un formulario POST, con su ruta nombrada, su método en el controlador y la redirección al home. ¿Te animas a compartir cómo te fue con tu implementación?