Laravel: SoftDelete

Mateus Galasso
1 min readJan 6, 2018

--

Bom dia pessoal, hoje vou apresentar um tópico rápido mas que eu acho muito interessante sobre Laravel. SOFTDELETE

Vamos dizer que você tem alguma ou muitas tabelas que não se pode realmente deletar os registros dela, ex: Clientes.

O que o SoftDelete faz? Ele cria uma nova colunar na tabela "deleted_at" que vai mostrar quando o registro foi "deletado". Mas o registro não vai ser realmente deletado. Ele vai continuar lá, mas o Eloquent não vai buscar esses registros quando der um 'Cliente::all'.

Ok, agora vamos ativar o softdelete. Primeiro no seu arquivo de migrate coloque a seguinte linha a mais. Exemplo abaixo:

Schema::table('Cliente', function ($table) {
$table->softDeletes();
});

Agora no Model do da sua classe acrescente conforme o exemplo abaixo


class Clientes extends Model
{
use SoftDeletes;

protected $dates = ['deleted_at'];
}

Pronto sua tabela clientes já tem um softdelete.

Mas agora você me pergunta. "Mas eu quero os registros que foram deletados também como eu faço?". Simples, use o método withTrashed() como no exemplo abaixo

Cliente::all()->withTrashed()->get();

Magico não?

"A cara deletei e mas não queria ter deletado, como faço?" Esse é uma das partes lindas do softdelete. Fácil, use o método restore() como no exemplo abaixo.

Cliente::withTrashed()->where('id', 1)->restore();

Show!!!!! Sweeeeeet. Tenho muito mais assuntos sobre Laravel para tratar com você. Stay tune ;)

--

--