Delete: Cancellazione Logice E Fisica

Ciao a tutti,

sto realizzando un’applicazione che prevede la cancellazione di entità sia logica che fisica sul DB.

diciamo che al 90% dei casi la cancellazione è di tipo logica assegnando un flag 0/1 etc etc…

ma in alcuni casi ho necessità di effetuare una cancellazione fisica.

ora:per la cancellazione logica, essendone la maggior parte dei casi sfrutto il metodo BeforeDelete intercettando la cosa e trasformando l’operazione in update

mentre per il 2° caso, dovrei fare un flusso apparte che finisce in un bel "delete from tab where…" (canc. fisica)

quindi ho questi due tipi di cancellazioni in una stessa app.

consiglio: che strada mi consigliate di prendere?..io pensavo di sfruttare "onBeforeDelete" (anche se dovrei capire bene come funziona)…oppure stavo pensando di procedere diretto verso la creazione di un nuovo flusso che non sfruttasse il "Model->delete()" del framework per non incappare nel beforeDelete scritto per la cancellazione logica.

spero di essermi spiegato bene!..grazie cmq in anticipo!

tune.

Ti sei spiegato benissimo. Posso dirti che mi è capitato di implementare la stessa cosa di recente ed io mi sono limitato ad aggiungere un campo “deleted” alla tabella (e conseguentemente un attributo “deleted” al model). Per farla breve, all’evento delete nel controller non elimino nulla, ma aggiorno il campo “delete”.

Altra cosa molto importante che dovrai ricordarti, è che dovrai modificare il metodo search del model affinché non mostri i record "cancellati".

Essì, infatti ala fine ho optato per la creazione di un altro flusso di cancellazione "fisica" rispetto a quella "logica" già esistente.

quindi alla fine la cosa và…

ovviamente poi cè tutta una logica di visibilità legata al flag di eliminazione logica se è settato a "0/1"…

ovviamente la funzione di delete fisico non và a toccare per niente il delete() di Yii, ma al suo interno fa un CDbCommand per un delete fisico suo…

ciao!