Como usar Soft Delete en Php con Laravel | Paso a paso


Escrito por zEOCk hace hace 2 años

Compartir En redes Sociales

Facebook WhatsApp Youtube

¿Qué es Soft Delete y por qué deberíamos implementarlo en nuestros proyectos?

En este artículo aprenderemos a usar softdelete en laravel y veremos por qué es tan importante implementarlo en nuestros proyectos web, es una herramienta que deberíamos implementar en futuros trabajos.

Laravel SoftDelete es una manera de borrar registros de una manera simbólico por así decirlo, ya que no eliminara por completo tus datos si no que los marcara con una fecha en el que decidiste borrarlos visualmente de tus proyectos, pero dejándolos en espera por cualquier cosa en la base de datos.

¿Que pasaría si has borrado algunos datos por equivocación y no tienes respaldo de ellos? claro empiezas a sudar helado, verdad, pues con Laravel SoftDelete podemos recuperarlos sin que se pierdan eliminando fuertes de cabeza.

A continuación veremos paso por paso el proceso a seguir para implementarlo en nuestros proyectos y así tener los datos asegurados de no ser borrados accidentalmente.

Paso 1 : Incluirlo en el modelo que queremos implementarlo.

El primero paso es demasiado sencillo, solamente añadimos lo siguiente en el modelo que lo vamos a usar App\Models\MiModelo.

Añadimos

use Illuminate\Database\Eloquent\SoftDeletes;

Y use SoftDeletes; como en el siguiente ejemplo.

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class User extends Model
{
    use SoftDeletes;
}

Paso 2 : Agregar un campo en la base de datos de nombre softDeletes.

Como segundo paso necesitamos agregar un nuevo campo en nuestra base de datos, para eso nos vamos a nuestra migración y agregamos $table->SoftDeletes(); y ejecutamos la migración.

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
Schema::table('MiTabla', function (Blueprint $table) {
    $table->softDeletes();
});

Con estos pasos realizados la próxima vez que eliminemos un registro automáticamente se registrara la fecha actual en el campo delete_at, a su vez cuando mandemos llamar los registros en una consulta, estos no se mostraran en los resultados, ya que están eliminados temporalmente y se excluirán automáticamente de todos los resultados

Extras:

Si queremos ver los registros eliminados marcados con Laravel SoftDelete debemos ser uso de las siguientes sentencias.

$user->trashed();

También podemos hacer uso del método restore datos eliminados por Laravel SoftDetele

$user->restore();

Este método también se usa en consultas para restaurar datos muchos datos

User::withTrashed()
        ->restore();

Para obtener registros con datos eliminados temporalmente usamos 

User::withTrashed()->get();

Cuando queremos eliminar datos de forma permanente, podemos forzar la eliminación usando

$user->forceDelete();

Si queremos obtener solo datos eliminados temporalmente, podemos recuperarlos con la ayuda del metodo onlyTrashed().

User::onlyTrashed()->get();

De esta manera podremos recuperar datos eliminados accidentalmente o para tenerlos por si en algún momento queremos hacer uso de ellos nuevamente, saludos y hasta la próxima..!!


Etiquetas:


Compartir En redes Sociales

Facebook WhatsApp Youtube

Generic placeholder image
Ing. Obed Sánchez

Gusto por las motos Harley Davidson, el rock n roll y la informática, creador de este blog para difusión del conocimiento libre, interesado en el mundo open source.