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 鈥榠s_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";
    } 

馃槈 馃槈 馃槈