2010-11-22 14 views

Antwort

4

Eine Möglichkeit besteht darin, die preDelete-Methode zu verwenden, um die Löschmethode einfach zusammen zu überspringen.

Beispiel:

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

Sie sollten in der Lage sein, diese Klassen in Ihren erweiterten Doctrine_Record zu tun oder, als Alternative, mit einem Hörer. Ein Listener kann in den Fällen nützlich sein, in denen Sie möchten, dass ein Teil Ihrer Anwendung Datensätze löschen kann (z. B. einen Admin-Abschnitt oder einen clientseitigen Code).

Mit dem Hörer Ansatz erstellen Sie einen Zuhörer mit dem oben preDelete Verfahren und registrieren Sie es mit Ihren Tabelle wie folgt aus:

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

Wenn der Hörer Sie noch nicht registriert ist, der Lage sein, Datensätze zu löschen. Wenn der Listener registriert ist, werden Ihre Löschungen nicht in der Datenbank gespeichert.

Weitere Informationen zu dieser Methode finden Sie hier: http://www.doctrine-project.org/projects/orm/1.2/docs/manual/event-listeners/en

0

IMHO Ich würde es wahrscheinlich auch so machen, da ein PreDelete-Hook die Delete-Methode nachher noch ausführen wird.

Verwandte Themen