En este video tutorial, exploraremos cómo actualizar registros en Laravel con datos provenientes de un formulario. Además, nos enfocaremos en la validación de los campos de la petición del usuario, un aspecto crucial para evitar errores comunes y asegurar la integridad de los datos. Exploraremos cómo manejar situaciones específicas, como la edición de registros con títulos duplicados y cómo Laravel nos facilita el manejo de estos casos.
Mira el código en GitHub: actual, resultado, comparación.
Obtener y actualizar registros con Eloquent
Podemos obtener un registro con Eloquent llamando al método findOrFail
de nuestro modelo y pasando el id
del registro como primer argumento:
<?php $note = Note::findOrFail($id);
Para actualizar un registro simplemente debemos llamar al método update
del modelo y pasar un arreglo asociativo con los campos que queremos actualizar:
<?php $note->update([ 'title' => $request->input('title'), 'content' => $request->input('content'), ]);
Para que esto funcione correctamente, debes completar la propiedad $fillable de tu modelo, como aprendimos en el videotutorial Crea un formulario para agregar datos con Laravel 10 o superior.
Podemos redirigir a una ruta retornando el método to_route
, por ejemplo return to_route('notes.index')
Validación de datos al actualizar registros
Para evitar errores debemos indicar que queremos que se ignore la nota actual, para no vernos obligados a tener que actualizar el título cada vez que queramos editar el contenido de la nota. Podemos encadenar el método ignore()
a la regla Rule::unique
pasando como argumento el id
de la nota que queremos ignorar:
<?php $request->validate([ 'title' => ['required', 'min:3', Rule::unique('notes')->ignore($id)] ])
También podemos pasar directamente el modelo al método ignore
: Rule::unique('notes')->ignore($note)
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Formulario de edición en Laravel 10 o superior Lección siguiente Eliminación de registros en Laravel 10 o superior con eliminado lógico