我可以只覆蓋delete()
方法Doctrine_Record
?正確的方法來防止刪除原則記錄
class myRec extends myRecBase
public function delete() {
return false;
}
}
或使用preDelete
掛鉤?或者在delete()
中拋出異常?
任何幫助將不勝感激。
我可以只覆蓋delete()
方法Doctrine_Record
?正確的方法來防止刪除原則記錄
class myRec extends myRecBase
public function delete() {
return false;
}
}
或使用preDelete
掛鉤?或者在delete()
中拋出異常?
任何幫助將不勝感激。
一種選擇是使用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
恕我直言,我可能會這樣做,因爲preDelete鉤子仍然會執行刪除方法。