Contenido del curso
Configuración base
- 3

Configuración inicial de un foro en Laravel
04:59 min - 4

Personalizar componentes Blade con Tailwind CSS
10:26 min - 5

Primer componente Livewire en Laravel
11:10 min - 6

Categorías dinámicas con Laravel y Blade
06:18 min - 7

Migración y factory para preguntas en Laravel
05:37 min - 8

Cómo listar preguntas con Tailwind y Laravel
07:57 min - 9

Respuestas anidadas y migrate fresh en Laravel
06:26 min
Preguntas
Pregunta
Respuesta
Flujo de trabajo tradicional
Conclusiones
Editar registros con update en Laravel
Resumen
Aprender a editar registros desde un formulario es uno de los pasos más prácticos cuando construyes un CRUD en Laravel. Aquí trabajamos el método update para modificar una pregunta existente, validando los datos, recuperando valores con old() y ajustando la entidad para permitir asignación masiva.
¿Cómo se estructura el método update en el controlador?
El método update recibe los datos del formulario y aplica los cambios sobre la pregunta específica que estás editando. La estructura se parece mucho a la del método store, así que puedes copiarla y adaptarla.
El flujo se divide en tres pasos claros:
- Validar los datos entrantes desde el formulario.
- Actualizar la pregunta con esos datos validados.
- Redirigir a la vista de la pregunta editada.
Para la validación necesitas marcar como requeridos el category_id, el title y el body. Son los mismos campos que usaste al crear el registro, lo que mantiene la consistencia entre creación y edición [0:15].
¿Qué hace el método update en Laravel? Recibe los datos del formulario, los valida, modifica el registro existente en la base de datos y redirige al usuario a la vista actualizada.
¿Por qué necesitas configurar la asignación masiva en la entidad?
Cuando envías datos desde un formulario y los pasas directamente al modelo, Laravel bloquea esa operación por seguridad. Para permitirla, debes declarar los campos asignables masivamente en la entidad.
En el modelo Pregunta agrega los campos category_id y title (junto con body) dentro de la propiedad $fillable. Sin esta configuración, la actualización no tendrá efecto aunque la lógica del controlador esté bien escrita [1:15].
Este paso es fácil de olvidar, y suele ser la razón principal por la que un update parece ejecutarse pero no guarda los cambios.
¿Cómo recuperar valores con la función old en formularios de edición?
Aquí viene lo interesante. Imagina que el usuario edita una pregunta, deja el campo title vacío y envía el formulario. Si la validación falla, pierde lo que había escrito y también el valor original del registro. Mala experiencia.
La función old() resuelve esto. Le dice al formulario: trabaja primero con lo que el usuario intentó enviar, y si no hay nada, muestra el valor original que estabas editando.
La sintaxis básica es así:
blade {{ old('body', $pregunta->body) }}
Esto se aplica a los tres campos del formulario:
title: recupera el título escrito o muestra el actual.body: recupera la descripción escrita o muestra la actual.category_id: recupera la categoría seleccionada o muestra la asignada.
¿Cómo funciona old en un select de categorías?
El caso del select es especialmente importante. Si el usuario cambia la categoría pero la validación falla por otro campo, sin old() perdería esa selección.
La lógica dentro del bucle que arma las opciones compara cada categoría con el valor recuperado:
blade {{ old('category_id', $pregunta->category_id) == $category->id ? 'selected' : '' }}
De esta forma, sea que el valor venga del intento previo o del registro original, siempre se compara contra cada opción para marcar la correcta como seleccionada [2:30].
¿Para qué sirve old() en Laravel? Recupera el valor que el usuario envió antes de un error de validación. Si no existe, usa un valor por defecto que tú definas, como el dato actual del registro.
¿Qué cambios necesita tu CRUD para editar correctamente?
Resumiendo el flujo completo, hay tres ajustes que debes verificar para que la edición funcione sin problemas:
- Controlador: agregar el método
updatecon validación, actualización y redirección. - Entidad: incluir los campos en
$fillablepara permitir asignación masiva. - Formulario: usar
old()en cada campo, incluido elselect, para conservar el estado tras una validación fallida.
Con estos tres cambios, tu sistema ya puede editar preguntas, mantener el estado del formulario ante errores y redirigir correctamente a la vista de detalle [3:45].
Ahora te toca a ti: implementa la edición de preguntas en tu propio proyecto y cuéntanos en los comentarios qué parte te resultó más útil o qué duda te quedó antes de pasar a la creación de preguntas en la próxima clase.