Curso de Laravel para Noobs - #16 Models VII [Delete e Soft Delete]
26/05/2023Neste tutorial falaremos sobre dois conceitos importantes dentro do manejo do banco de dados que são: exclusão ou delete e o conceito de soft delete.
Delete e Soft Delete no Laravel
No Laravel, "delete" e "soft delete" são dois conceitos relacionados à exclusão de registros em um banco de dados.
"Delete" refere-se à exclusão permanente de um registro de um banco de dados. Quando você exclui um registro usando a função delete() em um modelo no Laravel, o registro é removido permanentemente do banco de dados e não pode ser recuperado posteriormente.
"Soft delete", por outro lado, é um recurso do Laravel que permite a exclusão lógica de registros. Em vez de remover o registro fisicamente do banco de dados, o Laravel adiciona uma coluna chamada "deleted_at" à tabela correspondente ao modelo e define o valor dessa coluna como a data e hora da exclusão. Isso indica que o registro foi excluído, mas ainda pode ser restaurado se necessário.
routes/web.php
Primeiramente iremos criar a rota que realizará a exclusão dos dados:
Route::get('/delete/{id}',[TodoController::class,'delete'])->name('delete');
app/Http/Controllers/TodoController.php
No TodoController faremos a função tanto para o delete comum que elimina para sempre o registro do banco de dados quanto o soft delete que apenas atribui uma data na coluna deleted_at e mantém o registro no banco, tirando tal registro da visualização do usuário final:
/**
* Delete um dado no banco
*/
public function delete(Request $request)
{
Todo::where('id','=',$request->id)->delete();
}
Voce pode reparar no código acima que tanto pra executar o delete quanto o soft delete usam o mesmo método, o que vai mudar é que você vai configurar sua migration e o seu model para trabalhar com soft deletes.
app/Models/Todo.php
No model Todo precisamos dizer que vamos usar soft deletes:
use Illuminate\Database\Eloquent\SoftDeletes;
class Todo extends Model
{
use SoftDeletes;
}
database/migrations/TodoMigration.php
Na migration precisamos adicionar uma linha que irá criar a coluna deleted_at:
$table->softDeletes();
Após alterar a migration não esqueça de rodar o comando no terminal:
php artisan migrate
Então é isso pessoal! Por hoje é só! Fiquem todos com Deus! Sucesso nos códigos e na vida!
Do you need a teacher? webdesignemfoco@gmail.com