Consideraciones y buenas prácticas para eliminar datos

14/17

Lectura

Empiezo esta clase dándote una recomendación muy importante: utiliza la eliminación de registros solo cuando sea necesario y cuando estés totalmente seguro de que no va a tener ningún tipo de consecuencia a nivel de datos a futuro.

...

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

Aportes 19

Preguntas 1

Ordenar por:

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

como dice la profesora es importante conservar los datos otra opcion seria en las migraciones agregar el
$table->softDeletes();

    Schema::create('your_table', function (Blueprint $table) {
       	    ...
            $table->softDeletes();
        });

esto creara un campo deleted_at en la tabla y para que funcione aumentar en el modelo “Project” el use SoftDeletes;

De hecho la (buena) recomendación que hace la profe. sería una aplicación del Soft Deleting en Laravel, en donde básicamente a la tabla en cuestión se le agrega (vía migration preferiblemente) un campo llamado deleted_at, y se agrega al modelo el trait SoftDeletes (ver documentación). Esto es de gran utilidad, con lo cual se contribuye a la integridad de los datos.

Documentación: https://laravel.com/docs/7.x/eloquent#soft-deleting

Efectivamente es muy fácil eliminar registros con Laravel xD Pero se menciona algo muy importante, y es que siempre debemos de tratar de mantener nuestros registros con un estado is_active, así no los eliminamos directamente y podemos mantenerlos un tiempo.

Me gusta mas utilizar el método findOrFail que find pues me permite lazar un 404 en caso de que no este en la DB el registro a eliminar y de esa forma evitarse uno el error que sale en pantalla.

<?php
public function deleteProject(){
	$project = Project::findOrFail(1);
  $project->delete();
}

reto cumplido
Route::get(‘deleteFirstTenProject’, ‘ProjectController@deleteFirstTenProject’);

    public function deleteFirstTenProject()
    {
        $project = Project::take(10)->delete();
        return "Primeros 10 Registros eliminados";
    }

Agradecimiento a los compañeros que recomendaron el uso de SoftDelete.

Muy importante y fácil su uso.

Adjunto documentación año 2021

https://laravel.com/docs/7.x/eloquent#soft-deleting

Porque no recomiendas utilizar el soft delete con el campo deleted_at que se puede implementar en Laravel?

Done!

Función deletefirstTenProjects

Ruta deletefirstTenProjects

Muy importante la recomendación de no eliminar información, ya que nos puede servir en el futuro para múltiples usos, como estadísticas y demás …

muy buena clase aprendí mucho.

No explicó que para conservar datos en el modelo se puede usar softDelete()

Super excelente, que maravilla Eloquent.

 //funcion para eliminar registros de la tabla projects cuando el id sea mayor a 33
    public function deleteProjects() {
        $projects = Project::where('project_id', '>', 33)->delete();
        return "<script>alert('Registros eliminados'); window.location.href = '".route('projects')."'</script>";
    }

    //funcion para eliminar los primeros 5 registros de la tabla projects
    public function deleteProjects2() {
        $projects = Project::take(5)->delete();
        return "<script>alert('Registros eliminados'); window.location.href = '".route('projects')."'</script>";
    }```

Yo en estos casos utilizo softDeletes, creo que es la mejor manera de hacer una ‘baja’ pero de forma lógica y no física.
.
Reto completado:

public function deleteProject(){
    // Reto: Borrar los primeros 10 registros de la tabla
    Project::take(10)->delete();

    return "Proyectos Eliminados";
  }

public function deleteFirstTenProject() {
$project = Project::where(‘id’, ‘<=’, 10)->delete();
return “Registros eliminados”;
}

En laravel 8

public function deleteProject() {
            $project = Project::where('project_id', '<', 11)->delete();
            return "Registros eliminados";
        }
/**
     * Delete first 10 projects
     *
     */
    public function deleteFirstProject()
    {
        $projects = Project::where('id', '<=', 10)->delete();

        return "10 Primeros proyectos eliminados";
    }

public function destroy(): bool
{
return Project::where(‘project_id’, ‘>’, 15)->delete() ? true : false;
}

public function deleteProject() {
        // $project = Project::where('project_id', '>', 15)->delete();
        Project::take(10)->delete();
        return "Registros eliminados";
    }
}```

Sí, como menciona la profesora, es importante hacer un borrado lógico de nuestros datos (utilizando un campo is_active o deleted_at) manteniendolos en el tiempo, y que no permita consultar un histórico o verificar una acción pasada.