Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Minor
-
Resolution: Unresolved
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: Behaviors
-
Labels:None
Description
To be honest I don't know wich version I have but I believe it to be 1.2.3
The problem is pretty simple, I was trying to do a hardDelete and if it fails I would do a softDelete.
Example
try { $record->hardDelete(); } catch (Exception $e) { if ($e instanceof Doctrine_Connection_Mysql_Exception && $e->getPortableCode() == Doctrine_Core::ERR_CONSTRAINT) { try { $record->delete(); } catch (Exception $e1) { throw $e1; } } else { throw $e; } }
But when the first exception is thrown from hardDelete() in Doctrine_Template_SoftDelete(line 84) the listener flag for hardDelete is not set to false, so if I try to do the delete, it will still behave as if it was a hardDelete.
The solution would be catch the exception, reset the flag and rethrow it.
Patch attached
Hope this info is enough.