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)

Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

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