2010-11-22 40 views

Répondre

4

Une option consiste à utiliser la méthode preDelete pour ignorer simplement la méthode de suppression.

Exemple:

public function preDelete(Doctrine_Event $event) 
{ 
    $event->skipOperation(); 
} 

Vous devriez être en mesure de le faire dans vos classes Doctrine_Record étendues ou, comme alternative, avec un auditeur. Un programme d'écoute peut être utile dans les cas où vous souhaitez qu'une partie de votre application ait la possibilité de supprimer des enregistrements (par exemple, une section d'administration ou un code côté client).

Avec l'approche de l'auditeur que vous créez un écouteur avec la méthode preDelete ci-dessus et l'enregistrer avec votre table comme ceci:

$userTable = Doctrine_Core::getTable('User'); 
$userTable->addRecordListener(new HydrationListener()); 

Si l'auditeur n'est pas enregistré, vous serez toujours en mesure de supprimer des enregistrements. Si l'écouteur est enregistré, vos suppressions ne seront pas conservées dans la base de données.

Plus d'informations sur cette méthode peuvent être trouvés ici: http://www.doctrine-project.org/projects/orm/1.2/docs/manual/event-listeners/en

0

IMHO Je le ferais probablement aussi car un hook preDelete va encore exécuter la méthode delete par la suite.