Na primeira parte deste artigo, criamos o projeto, os métodos para listar registros e as respectivas rotas.
Nesta segunda parte, vamos implementar os métodos para deletar, restaurar e consultar modelos deletados.
Deletando registros
O primeiro passo é editar a controller e incluindo o método para deleção de registros.
public function deleteInvoiceById($id)
{
$invoice = Invoice::find($id);
if ($invoice) {
$invoice->delete();
return response()->json(['message' => 'Invoice '.$id.' successfully deleted']);
} else {
return response(['message' => 'Invoice not found'], 404);
}
}
Explicando o código, primeiro verificamos se o registro existe e, se existir procedemos à deleção retornando uma mensagem personalizada.
Se não existir informamos que o registro não foi encontrado.
Em seguida adicionamos uma nova rota no arquivo '\route\api.php' para acessar o método criado na controller.
Route::delete('/{id}/delete', 'deleteInvoiceById');
Agora vamos testar a aplicação fazendo uma requisição para rota que deleta o registro passado como parâmetro.
Se tudo estiver certo, veremos uma mensagem semelhante à esta logo abaixo.
Acessando novamente a rota que traz todos os registros veremos algo parecido com isto:
E acessando a rota para trazer um registro específico teremos o seguinte retorno:
Restaurando registros deletados
Continuando com o projeto iremos implementar agora um método para restaurar registros deletados...
public function restoreInvoiceById($id)
{
$invoice = Invoice::onlyTrashed()->find($id);
if ($invoice) {
$invoice->restore();
return response()->json(['message' => 'Invoice '.$id.' successfully restored']);
} else {
return response(['message' => 'Invoice not found'], 404);
}
}
...e sua respectiva rota.
Route::put('/{id}/restore', 'restoreInvoiceById');
Perceba a utilização do método onlyTrashed()
cujo objetivo é garantir que apenas registros deletados possam ser encontrados.
Agora vamos testar a restauração do registro deletado.
Consultando todos os registros...
...e consultando o registro pelo id temos:
Listando registros deletados
Para concluir a segunda parte deste artigo vamos criar o método que retorna um registro deletado pelo seu id...
public function getTrashedInvoiceById($id)
{
$invoice = Invoice::onlyTrashed()->find($id);
if ($invoice) {
return $invoice;
} else {
return response()->json(['message' => 'Invoice not found'], 401);
}
}
...e sua respectiva rota:
Route::get('/{id}/trashed', 'getTrashedInvoiceById');
Para testar este método acesse a rota que deleta registros qualquer id.
Logo após a deleção do registro basta acessar a rota que mostra registros deletados para obter o resultado abaixo.
Note que a propriedade "deleted_at" mostra a data e hora da exclusão desse registro.
Na terceira e última parte deste artigo vamos desenvolver o método que fará a exclusão definitiva dos modelos.
Até breve.
Top comments (0)