Php 防止条令记录被删除的正确方法

Php 防止条令记录被删除的正确方法,php,doctrine,record,Php,Doctrine,Record,我可以只覆盖delete()记录的doctor\u方法吗 class myRec extends myRecBase public function delete() { return false; } } 或者使用preDeletehook?或者在delete()中引发异常 任何帮助都将不胜感激。我想我也会这样做,因为preDelete钩子之后仍将执行delete方法。一个选项是使用preDelete方法简单地跳过delete方法 例如: public function pr

我可以只覆盖
delete()
记录的
doctor\u方法吗

class myRec extends myRecBase
  public function delete() {
    return false;
  }
}
或者使用
preDelete
hook?或者在
delete()
中引发异常


任何帮助都将不胜感激。

我想我也会这样做,因为preDelete钩子之后仍将执行delete方法。

一个选项是使用preDelete方法简单地跳过delete方法

例如:

public function preDelete(Doctrine_Event $event)
{
   $event->skipOperation();
}
您应该能够在扩展的Doctrine_Record类中实现这一点,或者,作为替代方案,使用侦听器。当您希望应用程序的某些部分能够删除记录时(例如,管理部分与客户端代码),侦听器可能会很有用

使用listener方法,您可以使用上述preDelete方法创建一个listener,并将其注册到您的表中,如下所示:

$userTable = Doctrine_Core::getTable('User');
$userTable->addRecordListener(new HydrationListener());
如果侦听器未注册,您仍可以删除记录。如果已注册侦听器,则删除将不会保留到数据库

有关该方法的更多信息,请参见: