Actualizando registros de la base de datos

13/17

Lectura

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.

...

Regístrate o inicia sesión para leer el resto del contenido.

Aportes 13

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Genial! El método update es muy util cuando quieres hacer un update sencillo sin tener que ir a buscar el registro y guardarlo en una variable y luego hacerle los cambios y luego guardarlos, usando ->update() podemos hacerlo de una forma más rápida y sencilla 😄

Así queda el método si deseamos actualizar desde un formulario:

public function updateProject(Request $request, $id) {
    $project = Project::findOrFail($id);;
    $project->city_id = $request->cityId;
    $project->company_id = $request->companyId;
    $project->user_id = $request->userId;
    $project->name = $request->name;
    $project->execution_date = $request->executionDate;
    $project->is_active = $request->isActive;
    $project->save();

    return "Actualizado";
}

Reto superado ![](

Done!
Función de renombre de proyectos

Ruta de renombre de proyectos inactivos

Antes de la tabla projects

Después de ejecutar función

Mi ruta

Route::get('inactivatedProject', 'ProjectController@inactiveProject');

Mi función:

public function inactiveProject()
    {
        Project::where('is_active', 0)
        ->update(['name' => 'I am desactivated']);

        return "Actualizado";
    }

😄

reto completado

Reto completado!

Es sorprende la ayuda de Eloquent y yo haciendo mis updates con php puro directamente el código.

 //funcion para actualizar el nombre de un registro en la tabla projects apuntando al id
    public function updateProject() {
        $project = Project::findOrFail(3);
        $project->name = 'sistema de ventas';
        $project->save();
    
        return "<script>alert('Registro actualizado'); window.location.href = '".route('projects')."'</script>";
    }

    //actualizar la fecha de ejecución y nombre de todos los proyectos que estén activos y que además tengan el id de ciudad igual a 4
    public function updateProjects() {
        $projects = Project::where('is_active', 1)->where('city_id', 4)->get();
        foreach ($projects as $project) {
            $project->execution_date = '2023-06-15';
            $project->name = 'software gobierno';
            $project->save();
        }
        return "<script>alert('Registros actualizados'); window.location.href = '".route('projects')."'</script>";
    }```

Reto completado 😃
.
Código

public function updateProject(){

    // Cambiando el nombre a todos los proyectos inactivos (is_active === 0)
    Project::where('is_active', '=', 0)
            ->update(['name' => "Proyecto inactivo"]);
    
    return "Proyectos Actualizado";
  }

.
Resultado

Realizado!

Reto cumplido

En ProjectController escribimos la función. En este caso le agregué una variable para que me contabilice los proyectos inactivos que se actualizaron. Si no encuentra un proyecto inactivo, lanzará otro mensaje, aunque no tengo la certeza de que si se podría acortar la consulta o integrarla a la misma variable $project:

     public function updateInactiveProjects() {
            $project = Project::where('is_active', 0)
                ->update(['name' => 'Proyecto Inactivo']);
            
            $count = Project::where('is_active', 0)->count();

                if($count == 0){

                    return "No hay proyectos por actualizar";
                } else {

                    return "Se han actualizado $count proyectos inactivos";
                }
    
        } 

Luego configurar la ruta:

Route::get('updateInactive', 'ProjectController@updateInactiveProjects');

Y el resultado final:

Se han actualizado 5 proyectos inactivos

Favor de entregarme feedback. Gracias.

El reto lo conseguí de la siguiente manera:

  • Primero actualice algunos proyectos desde la base de datos con el campo ‘is_active’ = 0.

  • Luego realice la siguiente función:

    public function updateInactiveProjects() {
        $project = Project::where('is_active', 0)
            ->update(['name' => 'Proyecto Inactivo']);

            return "Se han actualizado los proyectos inactivos";
    } 

😉 😉 😉