Así como hemos agregado nuevos registros a nuestra base de datos haciendo uso de modelos, podemos modificar o actualizar registros de una manera muy similar e igual de sencillo.
La estructura es básicamente la misma, sin embargo, tenemos una variante, que es encontrar el registro que vamos a modificar para poder cambiar un valor de algún campo:
$project =Project::find(1);$project->name ='Nuevo nombre para el proyecto de Id 1';$project->save();
Lo que hicimos fue buscar primero el proyecto, al cual le haremos la modificación a través de su llave primaria que hemos definido en el modelo Project, sobre ese objeto realizamos la asignación del nuevo valor en este caso a la columna name y luego llamamos el método save() que, a su vez, actualizará automáticamente el campo updated_at por la fecha/hora actual que corresponde a cuando hacemos un cambio en un registro.
Vamos a nuestro ProjectController y crearemos una función llamada updateProject donde agregaremos el siguiente contenido:
publicfunctionupdateProject(){ $project =Project::find(2); $project->name ='Proyecto de tecnología'; $project->save();return"Actualizado";}
En esta función estamos buscando primero el proyecto con project_id igual a 2 y luego le asignamos un nuevo nombre Proyecto de tecnología, la llave primaria ya la configuramos al principio cuando creamos el modelo, por eso ahora no necesitamos indicarle más que el valor y ya la encontrará usando el método find().
¡Veamos cómo funciona!
Agregamos la ruta de esta función a nuestro archivo de rutas web.php:
Vamos al navegador y escribimos en la barra de direcciones:
http://localhost:8000/updateProject
Si todo salió bien, nos mostrará el mensaje que pusimos en el return de la función ( "Actualizado"). Nuevamente, podemos ejecutar la ruta de la función que nos lista todos nuestros registros. Veamos el registro de project_id igual a 1 para comprobar si ahora tenemos el nombre del proyecto que le modificamos desde acá.
Actualizar registros por condiciones específicas ☝🏼
Podemos actualizar registros en bloques que cumplan condiciones específicas de acuerdo a sus campos en la base de datos, por ejemplo, si quisiéramos actualizar la fecha de ejecución de todos los proyectos que estén activos y que además tengan el id de ciudad igual a 4, tendríamos algo así:
Teniendo en cuenta que el método update solo recibe un array, si fuéramos a actualizar más de un campo bajo esta misma condición solo bastaría con separarlo por una coma.
Reto 🏁
Ahora ya puedes actualizar o modificar registros en tu base de datos, ahora te reto a que cambies el nombre de todos los proyectos inactivos en la tabla de projects.
En la próxima clase aprenderemos a eliminar registros de forma permanente en nuestra base de datos y los diferentes métodos que podemos usar para hacerlo responsablemente.