È così che lo faccio. Ho un is_deleted
campo che per impostazione predefinita è 0. Quindi le query controllano semplicemente WHERE is_deleted = 0
.
Cerco di stare lontano da qualsiasi hard-delete il più possibile. A volte sono necessari, ma ne faccio una funzione solo per l'amministratore. In questo modo possiamo eseguire l'eliminazione definitiva, ma gli utenti no...
Modifica: In effetti, puoi usarlo per avere più "livelli" di eliminazione graduale nella tua app. Quindi ognuno potrebbe essere un codice:
0
-> Non Eliminato1
-> Eliminato temporaneamente, viene visualizzato negli elenchi di elementi eliminati per gli utenti di gestione2
-> Eliminato temporaneamente, non viene visualizzato per nessun utente tranne gli utenti amministratori3
-> Viene visualizzato solo per gli sviluppatori.
Avere gli altri 2 livelli consentirà comunque a gestori e amministratori di ripulire gli elenchi eliminati se diventano troppo lunghi. E poiché il codice front-end controlla solo is_deleted = 0
, è trasparente per il frontend...