Zum Hauptinhalt springen
tsecurity.de LIVE
Echtzeit-Radar & Feeds
Alle RSS Feeds
👥 Community & Social
Windows Tipps & SecurityDarum bekommen Sie mit der DEAN bald eine zweite Kontonummer(24.09.2026 um 08:20 Uhr)
Sichere ProgrammierungTimescaleDB Course – PostgreSQL for Time-Series Data(24.09.2026 um 04:04 Uhr)
Sichere ProgrammierungAI agents can't tell who's giving the orders. So I built a tiny gate.(24.09.2026 um 08:22 Uhr)
Sichere ProgrammierungCan a Developer Ship a Frontend With No DNS or Centralized Backend?(24.09.2026 um 08:26 Uhr)
Sichere ProgrammierungD33:它猜錯方向,卻把價位框對了(24.09.2026 um 08:33 Uhr)
Sichere ProgrammierungMigrating Off Opsgenie Before Sunset: A Regen Walkthrough(24.09.2026 um 08:33 Uhr)
Windows Tipps & SecurityDarum bekommen Sie mit der DEAN bald eine zweite Kontonummer(24.09.2026 um 08:20 Uhr)
Sichere ProgrammierungTimescaleDB Course – PostgreSQL for Time-Series Data(24.09.2026 um 04:04 Uhr)
Sichere ProgrammierungAI agents can't tell who's giving the orders. So I built a tiny gate.(24.09.2026 um 08:22 Uhr)
Sichere ProgrammierungCan a Developer Ship a Frontend With No DNS or Centralized Backend?(24.09.2026 um 08:26 Uhr)
Sichere ProgrammierungD33:它猜錯方向,卻把價位框對了(24.09.2026 um 08:33 Uhr)
Sichere ProgrammierungMigrating Off Opsgenie Before Sunset: A Regen Walkthrough(24.09.2026 um 08:33 Uhr)
Intelligence View
⚡ tsecurity.de Intelligence

Soft Deletes no Laravel: apague sem apagar de verdade

"Some do banco" nem sempre é o que você quer Imagina a cena: o cliente liga desesperado porque um funcionário apagou um pedido importante. Você abre o banco, e... não tem. Sumiu. DELETE é DELETE. Agora é backup ou choro. Agora imagina a …

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!




"Some do banco" nem sempre é o que você quer



Imagina a cena: o cliente liga desesperado porque um funcionário apagou um pedido importante. Você abre o banco, e... não tem. Sumiu. DELETE é DELETE. Agora é backup ou choro.



Agora imagina a mesma cena, só que você digita $pedido->restore() e o registro volta como se nada tivesse acontecido. Herói do dia.



Essa é a proposta do Soft Delete: em vez de apagar a linha de verdade, o Laravel marca ela como apagada e finge que ela não existe mais nas consultas. Ela continua lá, só invisível. E dá pra trazer de volta quando quiser.






O problema: delete() é definitivo



Sem soft delete, isso aqui é irreversível:




$pedido->delete(); // tchau. pra sempre. 💀






Some do banco, some dos relatórios, some da vida. Se alguém apagou por engano, ou se você precisa de histórico pra auditoria, azar. E é impressionante como "apagou por engano" acontece com frequência em produção.






A solução: três passos e pronto



Primeiro, adiciona a coluna deleted_at na migration. O Laravel tem um helper só pra isso:




Schema::table('pedidos', function (Blueprint $table) {
$table->softDeletes(); // cria a coluna deleted_at (nullable)
});






Depois, usa a trait SoftDeletes na model:




use Illuminate\Database\Eloquent\SoftDeletes;

class Pedido extends Model
{
use SoftDeletes;
}






Pronto. Agora o delete() mudou de comportamento sem você tocar em mais nada:




$pedido->delete();
// não apaga a linha — só preenche deleted_at com a data/hora de agora






E o melhor: as consultas normais ignoram automaticamente os registros apagados. Pedido::all() não traz nada que foi soft-deletado. Você não precisa filtrar nada na mão.






Trazendo de volta e vendo os apagados



Restaurar é uma linha:




$pedido->restore(); // deleted_at volta pra null, registro "revive"






Pra incluir os apagados numa consulta, withTrashed:




Pedido::withTrashed()->get(); // traz tudo, apagados junto






Pra ver os apagados (útil pra uma tela de "lixeira"):




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






E se precisar apagar de verdade, aí sim, sem volta:




$pedido->forceDelete(); // agora foi pro além de verdade









Como usar na prática



Lixeira pro usuário. Uma tela onde ele apaga itens, mas tem 30 dias pra restaurar. onlyTrashed() lista, restore() recupera.



Auditoria e histórico. Setores como financeiro e jurídico costumam exigir que nada suma de verdade. Soft delete mantém o rastro sem poluir as telas do dia a dia.



Checar o estado no código. Dá pra saber se um registro tá apagado:




if ($pedido->trashed()) {
// esse aqui tá na lixeira
}









Pegadinha 1: unique não sabe de soft delete



Essa pega muita gente. Você tem uma coluna email com índice unique. O usuário [email protected] é soft-deletado. Ele tenta se cadastrar de novo... e o banco recusa, porque a linha antiga ainda está lá, ocupando o email.



O unique do banco não liga pro deleted_at — pra ele, a linha existe. Na validação, você precisa dizer isso explicitamente. Na Rule unique, ignore os apagados:




use Illuminate\Validation\Rule;

Rule::unique('usuarios', 'email')->whereNull('deleted_at');






Assim a validação só considera os registros ativos, e o email "liberado" pelo soft delete volta a funcionar.






Pegadinha 2: relacionamento com registro apagado



Outra que confunde. O pedido foi soft-deletado, mas você carrega ele por um relacionamento e o item some:




$cliente->pedidos; // não traz os pedidos apagados






Isso normalmente é o que você quer. Mas quando não for — tipo montar um histórico completo do cliente — o relacionamento também aceita withTrashed:




public function pedidos()
{
return $this->hasMany(Pedido::class)->withTrashed();
}






Ou pontualmente, sem mexer na model:




$cliente->pedidos()->withTrashed()->get();









Bônus: e agora?



Olha as tabelas do seu projeto e pergunta pra cada uma: "se alguém apagar isso por engano, dói?" Pedido, fatura, contrato, usuário — provavelmente sim. Categoria de teste que você cria e joga fora — provavelmente não. Soft delete é ótimo, mas não precisa estar em tudo; coluna a mais e query um pouco mais complexa têm um custo.



E cuidado com a ideia de "guardar tudo pra sempre". Dependendo do dado (LGPD, por exemplo), você pode ser obrigado a apagar de verdade depois de um tempo. Aí um job periódico com forceDelete() nos registros antigos resolve.






Antes de você fechar a aba



Já perdeu algum registro importante em produção por causa de um delete() sem volta? Ou já foi salvo por um soft delete que alguém teve a sabedoria de colocar antes?



Me conta aí embaixo. E se esse post pode evitar um choro futuro no seu projeto, salva ele e manda pro colega que ainda apaga tudo direto no banco. 😅

CTI Threat Relationship Graph2 Knoten / 1 Relationen
CVE / Incident Software MITRE ATT&CK CWE Weakness IoC
SOC Incident Playbook: Remote Code Execution (RCE) Defense
title: Detect Exploitation - Soft Deletes no Laravel: apague sem apagar de verdade
id: 2072256e-a2cf-46c8-b62f-453da7284c45
status: experimental
description: Automatisch generierte SIEM-Erkennungsregel basierend auf CTI Intelligence
references:
  - https://tsecurity.de/
author: iShareStuff CTI Automated Detection Engine
date: 2026-09-24
logsource:
  category: network_connection
  product: any
detection:
  selection:
      CommandLine|contains:
        - 'exploit'
  condition: selection
falsepositives:
  - Legitime administrative Zugriffe oder Penetrationstests
level: high
tags:
  - attack.initial_access
rule CTI_Threat_Indicator {
    meta:
        author = "iShareStuff CTI Automated Detection Engine"
        date = "2026-09-24"
        description = "YARA Signature for "
    strings:
        $str = "Soft Deletes no Laravel: apagu" ascii wide
    condition:
        any of them
}
tsecurity.de Cognitive Threat RAG
Fokus-Vektor:

Kognitive Analyse für identifizierte Bedrohung: Erhöhte Bedrohungslage im Bereich Soft Deletes no Laravel: apague sem apag.... Basierend auf 368k Vektor-Korrelationen werden sofortige Isolationsmaßnahmen für betroffene Endpunkte empfohlen.

🛡️ Angriffsfläche & Exposure

Netzwerk/Remote-Zugriff ohne Vorauthentifizierung möglich.

Empfohlene Sofortmaßnahmen
  • 1. Perimeter-Inspektion: Relevante Portfreigaben und exponierte Endpunkte unverzüglich scannen.
  • 2. Patch-Applikation: Hersteller-Hotfix einspielen oder betroffene Daemons in isolierte DMZ-Segmente überführen.
  • 3. Telemetrie & EDR-Alerts: Prozessaufrufe und Child-Processes auf anomale Shell-Spawns überwachen.
🔗 Semantisch verwandte Zero-Days MariaDB 11.7 VEC
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Soft Deletes no Laravel: apague sem apagar de verdade

Thematisch verwandte Begriffe: Soft, Deletes, Laravel, apague · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-96772 | A security flaw has been discovered in Intelliants Subrion CMS up to 4.2…
Advisory →
TTS Reader • tsecurity.de Voice
tsecurity.de Icon
tsecurity.de App
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
🔖 Gespeicherte Artikel
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel Rechts: nächster Artikel unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel TTP ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...

Zurück: vorheriger Vor: nächster
↗ Original-Quelle
Social Reaktionen Deine Reaktion zählt
Einstufung & Relevanz-Poll 0 Stimmen
In sozialen Netzwerken teilen 1-Klick