我可以覆盖delete()
的{{1}}方法吗?
Doctrine_Record
或使用class myRec extends myRecBase
public function delete() {
return false;
}
}
挂钩?或者在preDelete
中抛出异常?
任何帮助将不胜感激。
答案 0 :(得分:4)
一个选项是使用preDelete方法简单地一起跳过删除方法。
示例:
public function preDelete(Doctrine_Event $event)
{
$event->skipOperation();
}
您应该可以在扩展的Doctrine_Record类中执行此操作,或者作为替代方法,使用侦听器执行此操作。在您希望应用程序的某些部分能够删除记录(例如,管理部分与客户端代码)的情况下,监听器可能是有益的。
使用侦听器方法,您可以使用上面的preDelete方法创建一个侦听器,并将其注册到您的表中,如下所示:
$userTable = Doctrine_Core::getTable('User');
$userTable->addRecordListener(new HydrationListener());
如果未注册监听器,您仍可以删除记录。如果注册了侦听器,则删除操作将不会持久存储到数据库中。
有关该方法的更多信息,请访问: http://www.doctrine-project.org/projects/orm/1.2/docs/manual/event-listeners/en
答案 1 :(得分:0)
恕我直言,我也可能这样做,因为preDelete钩子后来仍然会执行删除方法。