Hi guys,
What is the best way to organise a soft deletion pattern?
When nothing gets removed from the database but the flag is being updated.
The prototype is as follows:
On Delete -> Update table set DeletedFlag=1
on Select -> Select from table where DeletedFlag=0 AND ... Further conditions ....
What I’m thinking now is to extend the ActiveRecordBehavior class and add the following
protected $SoftDeleteColumn = 'Deleted'; // Column name
public function beforeDelete( CEvent $oEvent )
{
parent::beforeDelete( $oEvent );
if($this->SoftDeleteColumn!=null and $oEvent->isValid and !$oEvent->handled)
{
if ( $oEvent->sender->hasAttribute( $this->SoftDeleteColumn))
{
$oEvent->isValid = false;
$oEvent->handled = true;
$oEvent->sender->setAttribute( $this->SoftDeleteColumn, 1 );
}
}
}
Then to override beforeFind so it extends the original one by adding a criteria of
WHERE SoftDeleteColumn=0
Will beforeFind fire for Find, FindbyPk,findall functions? Are there any instances I should be aware of?
What are the pros and cons of this approach? Kindly advise.
I appreciate your time
Caulfield
[UPD]
I googled forums and was told that
How do I deal with this? Thanks