Na primeira parte deste artigo, criamos o projeto, os métodos para listar registros e as respectivas rotas.
Na segunda parte, adicionamos os métodos para deletar, restaurar e consultar modelos deletados.
Nesta terceira e última parte veremos como remover de forma definitiva um registro do banco de dados.
Removendo registros permanentemente
Seguindo a mesma abordagem feita nas duas primeiras partes, vamos criar um método na controller...
public function forceDeleteInvoiceById($id)
{
$invoice = Invoice::withTrashed()->find($id);
if ($invoice) {
$invoice->forceDelete();
return response()->json(['message' => 'Invoice '.$id.' permanently deleted']);
} else {
return response(['message' => 'Invoice not found'], 404);
}
}
...e em seguida a respectiva rota.
Route::delete('/{id}/forcedelete', 'forceDeleteInvoiceById');
Repare que instruímos o querybuilder a incluir registros deletados na consulta através o método withTrashed()
.
E acessando a rota passando um registro para deleção definitiva temos o seguinte resultado:
De acordo com a documentação oficial é possível agendar a exclusão definitiva de registros marcados como deletados fazendo uso de agendamento configurado na classe App\Console\Kernel.php
.
Entretanto não abordaremos esta técnica neste artigo.
Conclusão
Se você chegou até aqui meu muito obrigado.
Espero que o projeto possa ajudá-lo de alguma forma, seja com conhecimento ou ideias para solucionar problemas do dia a dia.
Extensões utilizadas
Em desenvolvimento web, uma boa ferramenta para testar requisições api faz toda diferença.
Por isso deixo aqui o link para a extensão para VSCode Thunder RESTClient.
Na minha opinião não deixa nada a desejar para outras ferramentas pagas.
https://marketplace.visualstudio.com/items?itemName=rangav.vscode-thunder-client
Já para aplicações Laravel, a extensão Laravel Extra Intellisense ajuda muito na inclusão automática de referências.
https://marketplace.visualstudio.com/items?itemName=amiralizadeh9480.laravel-extra-intellisense
Repositório público
O projeto está publicado no github e pode ser acessado através deste endereço
https://github.com/MarcioPolicarpo/laravel9-soft-delete
Top comments (0)